RDS PostgreSQL의 SQL 통계

RDS PostgreSQL의 SQL 통계

AWS Performance Insights에서 RDS PostgreSQL 인스턴스의 SQL 통계를 어떻게 수집하고 확인하는지 설명하는 페이지예요. PostgreSQL은 다이제스트(digest) 단위로만 통계를 수집한다는 점이 특징이에요.

출처: 문서

본문

Performance Insights는 각 SQL 호출에 대해, 그리고 쿼리가 실행되는 매초마다 SQL 통계를 수집해요. RDS for PostgreSQL은 다이제스트 단위에서만 SQL 통계를 수집하며, 문장 단위의 통계는 표시되지 않아요.

아래에서 RDS for PostgreSQL의 다이제스트 단위 통계에 대한 정보를 확인할 수 있어요.

RDS PostgreSQL용 다이제스트 통계

SQL 다이제스트 통계를 보려면 RDS PostgreSQL에 pg_stat_statements 라이브러리가 로드되어 있어야 해요. PostgreSQL 11 이상과 호환되는 DB 인스턴스는 기본적으로 이 라이브러리를 로드해요. 반면 PostgreSQL 10 이하와 호환되는 DB 인스턴스는 이 라이브러리를 수동으로 활성화해야 해요. 수동으로 활성화하려면 DB 인스턴스와 연결된 DB 파라미터 그룹의 shared_preload_libraries에 pg_stat_statements를 추가한 다음, DB 인스턴스를 재부팅하면 돼요. 자세한 내용은 Amazon RDS의 파라미터 그룹 문서를 참고해요.

참고 — Performance Insights는 pg_stat_activity에서 잘리지 않은(truncate) 쿼리에 대해서만 통계를 수집할 수 있어요. 기본적으로 PostgreSQL은 4,096바이트보다 긴 쿼리를 잘라버려요. 쿼리 크기를 늘리려면 DB 인스턴스와 연결된 DB 파라미터 그룹에서 track_activity_query_size 파라미터를 변경하면 돼요. 이 파라미터를 변경하면 DB 인스턴스 재부팅이 필요해요.

RDS PostgreSQL용 초당 다이제스트 통계

PostgreSQL DB 인스턴스에서 사용할 수 있는 SQL 다이제스트 통계는 다음과 같아요.

지표 (Metric) 단위 (Unit)
db.sql_tokenized.stats.calls_per_sec 초당 호출 수
db.sql_tokenized.stats.rows_per_sec 초당 행 수
db.sql_tokenized.stats.total_time_per_sec 초당 평균 활성 실행 수 (AAE)
db.sql_tokenized.stats.shared_blks_hit_per_sec 초당 블록 히트 수
db.sql_tokenized.stats.shared_blks_read_per_sec 초당 블록 읽기
db.sql_tokenized.stats.shared_blks_dirtied_per_sec 초당 변경(dirty)된 블록 수
db.sql_tokenized.stats.shared_blks_written_per_sec 초당 블록 쓰기
db.sql_tokenized.stats.local_blks_hit_per_sec 초당 로컬 블록 히트 수
db.sql_tokenized.stats.local_blks_read_per_sec 초당 로컬 블록 읽기
db.sql_tokenized.stats.local_blks_dirtied_per_sec 초당 변경(dirty)된 로컬 블록 수
db.sql_tokenized.stats.local_blks_written_per_sec 초당 로컬 블록 쓰기
db.sql_tokenized.stats.temp_blks_written_per_sec 초당 임시 쓰기
db.sql_tokenized.stats.temp_blks_read_per_sec 초당 임시 읽기
db.sql_tokenized.stats.blk_read_time_per_sec 초당 평균 동시 읽기
db.sql_tokenized.stats.blk_write_time_per_sec 초당 평균 동시 쓰기

RDS PostgreSQL용 호출당 다이제스트 통계

다음 지표들은 SQL 문장에 대한 호출당 통계를 제공해요.

지표 (Metric) 단위 (Unit)
db.sql_tokenized.stats.rows_per_call 호출당 행 수
db.sql_tokenized.stats.avg_latency_per_call 호출당 평균 지연 시간 (ms)
db.sql_tokenized.stats.shared_blks_hit_per_call 호출당 블록 히트 수
db.sql_tokenized.stats.shared_blks_read_per_call 호출당 블록 읽기
db.sql_tokenized.stats.shared_blks_written_per_call 호출당 블록 쓰기
db.sql_tokenized.stats.shared_blks_dirtied_per_call 호출당 변경(dirty)된 블록 수
db.sql_tokenized.stats.local_blks_hit_per_call 호출당 로컬 블록 히트 수
db.sql_tokenized.stats.local_blks_read_per_call 호출당 로컬 블록 읽기
db.sql_tokenized.stats.local_blks_dirtied_per_call 호출당 변경(dirty)된 로컬 블록 수
db.sql_tokenized.stats.local_blks_written_per_call 호출당 로컬 블록 쓰기
db.sql_tokenized.stats.temp_blks_written_per_call 호출당 임시 블록 쓰기
db.sql_tokenized.stats.temp_blks_read_per_call 호출당 임시 블록 읽기
db.sql_tokenized.stats.blk_read_time_per_call 호출당 읽기 시간 (ms)
db.sql_tokenized.stats.blk_write_time_per_call 호출당 쓰기 시간 (ms)

RDS PostgreSQL용 기본 통계

PostgreSQL DB 인스턴스에서 사용할 수 있는 SQL 통계는 다음과 같아요.

지표 (Metric) 단위 (Unit)
db.sql_tokenized.stats.calls 호출 수
db.sql_tokenized.stats.rows 행 수
db.sql_tokenized.stats.total_time 총 시간 (ms)
db.sql_tokenized.stats.shared_blks_hit 블록 히트 수
db.sql_tokenized.stats.shared_blks_read 블록 읽기
db.sql_tokenized.stats.shared_blks_dirtied 변경(dirty)된 블록 수
db.sql_tokenized.stats.shared_blks_written 블록 쓰기
db.sql_tokenized.stats.local_blks_hit 로컬 블록 히트 수
db.sql_tokenized.stats.local_blks_read 로컬 블록 읽기
db.sql_tokenized.stats.local_blks_dirtied 변경(dirty)된 로컬 블록 수
db.sql_tokenized.stats.local_blks_written 로컬 블록 쓰기
db.sql_tokenized.stats.temp_blks_written 임시 쓰기
db.sql_tokenized.stats.temp_blks_read 임시 읽기
db.sql_tokenized.stats.blk_read_time 평균 동시 읽기 (ms)
db.sql_tokenized.stats.blk_write_time 평균 동시 쓰기 (ms)

이 지표들에 대한 자세한 내용은 PostgreSQL 문서의 pg_stat_statements를 참고해요.

더 알아보기 (Learn more)