본문 바로가기

Database/Postgresql

Postgresql 13 - pg_stat_statements 정의 및 기능정리

728x90
반응형

## Postgresql 13의 공식문서를 참고로 정리

www.postgresql.org/docs/13/pgstatstatements.html

 

F.29. pg_stat_statements

F.29. pg_stat_statements F.29.1. The pg_stat_statements View F.29.2. Functions F.29.3. Configuration Parameters F.29.4. Sample Output F.29.5. Authors The pg_stat_statements module provides a …

www.postgresql.org

 

## 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 설치 및 사용방법

 

Postgresql 13 - pg_stat_statements 설치 및 사용방법

먼저 pg_stat_statements 에 대해서 알아보자. Postgresql 공식사이트 - www.postgresql.org/docs/13/pgstatstatements.html pg_stat_statements를 한문장으로 정리하면 실행되는 쿼리의 통계(빈도,실행시간,Row수..

wylee-developer.tistory.com

 

<끄읕>

 

728x90
반응형