## Postgresql 13의 공식문서를 참고로 정리
www.postgresql.org/docs/13/pgstatstatements.html
## pg_stat_statements 정의 및 설명
* 실행되는 모든 SQL 문의 계획 및 실행 통계를 추적/저장하는 모듈
* pg_stat_statements view는 결국 pg_stat_statements function을 실행하는 것으로 구현되어 있다.
* pg_stat_statements module은 공유메모리를 사용하여 shared_preload_libraries 옵션을 적용해야 사용할 수 있다. (shared_preload_libraries 옵션을 적용하려면 postgresql 서비스를 재기동 해야 한다.)
* DB별로 "create extension pg_stat_statements" 을 실행하여야 사용이 가능이 가능하다.
* Postgresql 9.4 이하는 사용 불가능이며 Postgresql 9.5 이상부터 사용가능하다.
## pg_stat_statements view의 컬럼속성
No | 컬럼명 | 컬럼타입 | 설명 |
1 | userid | oid | 사용자 oid |
2 | dbid | oid | 데이터베이스 oid |
3 | queryid | bitint | 쿼리ID |
4 | query | text | 쿼리문자열 |
5 | plans | bigint | plan 횟수 (pg_stat_statements.track_planning 옵션 활성화시 표시, 기본값0) |
6 | total_plan_time | double precision | plan 총 실행시간(밀리초) (pg_stat_statements.track_planning 옵션 활성화시 표시, 기본값0) |
7 | min_plan_time | double precision | plan 최소 실행시간(밀리초) (pg_stat_statements.track_planning 옵션 활성화시 표시, 기본값0) |
8 | max_plan_time | double precision | plan 최대 실행시간(밀리초) (pg_stat_statements.track_planning 옵션 활성화시 표시, 기본값0) |
9 | mean_plan_time | double precision | plan 평균 시간(밀리초) (pg_stat_statements.track_planning 옵션 활성화시 표시, 기본값0) |
10 | stddev_plan_time | double precision | plan 표준 편차(밀리초) (pg_stat_statements.track_planning 옵션 활성화시 표시, 기본값0) |
11 | calls | bigint | 실행횟수 |
12 | total_exec_time | double precision | 쿼리 실행에 소요 된 총 시간 (밀리 초) |
13 | min_exec_time | double precision | 쿼리 실행에 소요 된 최소 시간 (밀리 초) |
14 | max_exec_time | double precision | 쿼리 실행에 소요 된 최대 시간 (밀리 초) |
15 | mean_exec_time | double precision | 쿼리 실행에 소요 된 평균 시간 (밀리 초) |
16 | stddev_exec_time | double precision | 쿼리 실행에 소요 된 시간의 모집단 표준 편차 (밀리 초) |
17 | rows | bigint | 검색되거나 영향을받는 총 ROW 수 |
18 | shared_blks_hit | bigint | 총 공유 블록 캐시 적중 수 |
19 | shared_blks_read | bigint | 총 공유 블록 수 |
20 | shared_blks_dirtied | bigint | 더러워진(?) 총 공유 블록 수 |
21 | shared_blks_written | bigint | 작성된 총 공유 블록 수 |
22 | local_blks_hit | bigint | 로컬 블록 캐시 히트 수 |
23 | local_blks_read | bigint | 읽은 총 로컬 블록 수 |
24 | local_blks_dirtied | bigint | 더러워진(?) 로컬 블록 수 |
25 | local_blks_written | bigint | 총 로컬 블록 수 |
26 | temp_blks_read | bigint | 읽은 총 임시 블록 수 |
27 | temp_blks_written | bigint | 작성된 총 임시 블록 수 |
28 | blk_read_time | double precision | 블록을 읽는 데 걸린 총 시간 (밀리 초) (track_io_timing 이 활성화 된 경우, 그렇지 않으면 0) |
29 | blk_write_time | double precision | 블록을 쓰기에 소요 된 총 시간 (밀리 초) (track_io_timing 이 활성화 된 경우, 그렇지 않으면 0) |
30 | wal_records | bigint | WAL 레코드 수 |
31 | wal_fpi | bigint | WAL 전체 페이지 이미지 수 |
32 | wal_bytes | numeric | WAL 바이트 양 |
## Functions
1. pg_stat_statements_reset(userid oid, dbid oid, queryid bigint) returns void
- 지정한 레코드를 초기화 해주는 function
2. pg_stat_statements(showtext boolean) returns setof record
- pg_stat_statements(showtext false) 로 실행하면 query 컬럼값이 표시가 되지 않고 NULL 로 표시된다.
- 사용 예) select * from public.pg_stat_statements(false)
## 설정변수(Configuration Parameters)
* postgresql.conf 에 설정하는 변수들이며 반영하려면 postgresql 재기동이 필요하다.
1. pg_stat_statements.max (integer)
- pg_stat_statements 뷰의 최대 ROW 수
- 기본값은 5,000
2. pg_stat_statements.track (enum)
- 유틸리티 명령을 추적에 대한 기능
- enum에 대한 값은 top, all, none 3가지이며 기본값은 top 이다.
3. pg_stat_statements.track_utility (boolean)
- 기본값은 on
- off 이면 SELECT, INSERT, UPDATE, DELETE 쿼리문만 수집
4. pg_stat_statements.track_planning (boolean)
- 실행되는 쿼리문의 plan 값을 저장할지 여부
- 기본값은 off
5. pg_stat_statements.save (boolean)
- 서버 종료시 pg_stat_statements 데이터를 저장할지 여부를 설정
- 기본값은 on
## pg_stat_statements 설치 및 사용방법
2021/01/11 - [Database/Postgresql] - Postgresql 13 - pg_stat_statements 설치 및 사용방법
<끄읕>
'Database > Postgresql' 카테고리의 다른 글
Postgresql function 개발 및 예제 (0) | 2021.01.22 |
---|---|
pgagroal 란? (0) | 2021.01.15 |
Postgresql 13 - pg_stat_statements 설치 및 사용방법 (0) | 2021.01.11 |
Postgresql 13 - 운영환경 구성방법 (2) | 2021.01.10 |
Postgresql 13을 CentOS 7.6에 RPM으로 설치하기 (2) | 2021.01.07 |