PG SQL 통계
PG SQL 통계는 향후 SQL 통계(DB)로 명칭이 변경될 예정입니다.
PostgreSQL의 pg_stat_statements 뷰에서 제공하는 DB 자체의 SQL 통계입니다. SQL별 실행 횟수, 수행 시간, 처리 Row 수, 블록 I/O 등의 델타값을 DB에 직접 조회하지 않고 화면에서 확인할 수 있습니다.
-
에이전트가 1시간 간격으로 델타값을 계산하여 수집합니다.
-
에이전트 옵션
statements_order_by기준(기본값total_time)으로statements_row_limit까지 수집합니다. (기본값5,000건) -
DBX 에이전트 1.6.10 버전 이상이 필요합니다.
설정 완료 후 약 1시간 후 데이터 수집이 시작됩니다.
사전 설정
화면에 데이터를 표시하려면 DB 설정과 Agent 설정을 필수로 설정해야 합니다.
DB 설정
-
pg_stat_statements 확장 설치
pg_stat_statements는 PostgreSQL의 contrib 모듈에 포함되어 있습니다. 설치되어 있지 않다면 패키지를 설치합니다.# Red Hat / CentOS
yum install postgresql-contrib
# Debian / Ubuntu
apt-get install postgresql-contrib -
postgresql.conf 설정
shared_preload_libraries에pg_stat_statements를 추가합니다. 변경 후 PostgreSQL 재시작이 필요합니다.shared_preload_libraries = 'pg_stat_statements' -
확장 모듈 생성
모니터링 대상 데이터베이스에서 확장을 생성합니다.
CREATE EXTENSION pg_stat_statements; -
설치 확인
SELECT * FROM pg_stat_statements LIMIT 1;
Agent 설정
PostgreSQL에서는 statements 옵션의 기본값이 true이므로, 별도 설정 없이 SQL 통계가 기본 수집됩니다. 수집 을 비활성화하려면 statements=false로 설정하세요.
| 설정 항목 | 타입 | 기본값 | 설명 |
|---|---|---|---|
statements | boolean | true | SQL 통계 수집 여부를 설정합니다. |
상세 옵션
| 설정 항목 | 타입 | 기본값 | 설명 |
|---|---|---|---|
statements_interval | int | 1 | SQL 통계 수집 간격 (시간 단위). statements_interval=1로 지정할 경우 1시간 주기로 수집합니다. |
statements_interval_min | int | 0 | SQL 통계 수집 간격 (분 단위). statements_interval_min=10으로 지정할 경우 10분 주기로 수집합니다. 이 옵션을 설정하면 statements_interval보다 우선합니다. |
statements_min_row | int | 10000 | SQL 통계 데이터를 수집하는 기준입니다. 아래 수집 기준을 참고하세요. |
statements_row_limit | int | 5000 | 수집 최대 건수. statements_order_by 기준 상위 건수까지 수집합니다. |
statements_order_by | String | "total_time" | SQL 통계 정보를 수집할 때의 정렬 기준을 지정합니다. (예: statements_order_by=total_time,temp_blks_read) |
statements_schema | String | "" | pg_stat_statements 확장이 whatap.conf의 db 옵션에 기입한 DB에 설치되지 않은 경우, 확장이 설치된 DB 명을 지정합니다. |
수집 기준(statements_min_row)
pg_stat_statements의 rows(해당 쿼리로 출력하거나 영향을 받는 총 Row 수)가 statements_min_row를 초과할 경우 해당 SQL 데이터를 수집합니다.
고객사의 DB 워크로드에 따라 SQL 수집량이 너무 많거나 적을 경우, statements_min_row와 statements_row_limit 값을 조정하여 수집량을 제어할 수 있습니다.
SQL 통계(DB) 분석하기
기본 옵션
상단 필터 영역에서 조회 기간, 대상 인스턴스, 필터 조건 등을 설정할 수 있습니다.
-
시간: 조회할 날짜와 시간 선택
-
인스턴스: 조회 대상 DB 인스턴스 선택
-
필터: 조건별 데이터 필터링(다중 조건 시 AND 로직 적용)
-
정렬 순서: 데이터를 정렬할 기준 컬럼 선택(예:
rows,total_time,calls등) -
조회 건수: 테이블 표시 건수 설정
-
결과 내 검색: 조회된 결과 내에서 쿼리 키워드 검색
-
(컬럼 선택): 표시할 컬럼을 추가/삭제, 드래그로 순서 변경 가능
-
(다운로드): CSV 형식으로 내보내기
컬럼 안내
기본 정보
| 컬럼 | 설명 |
|---|---|
query | 정규화된 SQL 문(리터럴 값이 $1, $2 등으로 치환됨) |
queryid | 동일한 정규화 쿼리를 식별하는 해시 코드 |
usename | 쿼리를 실행한 사용자 명 |
db | 쿼리가 실행된 데이터베이스 명 |
instance | SQL이 실행된 DB 인스턴스 명 |
실행 및 시간
| 컬럼 | 설명 |
|---|---|
calls | SQL 실행 횟수 |
total_time | 총 실행 시간(단위: 밀리초) |
rows | 쿼리로 출력하거나 영향을 받은 총 Row 수 |