본문 바로가기

Database/PostgreSQL

PostgreSQL: query 기록하고 보기 - table(view)로 보기 # ORM # raw query # extension # pg_stat_statements

728x90
반응형

orm으로 query를 작성한 경우, orm이 실제 query로 어떻게 변했는지를 파악하고 싶을 때가 있다.

 

PostgreSQL의 경우 실제 query를 table 형태로 저장해서 보도록 하자

 

OS: ubuntu 22.04 기준

 

1. postgresql.conf 에 shared_preload_libraries를 찾아서 주석을 풀고 다음과 같이 적자

ubuntu 기준 기본 postgresql.conf 위치: /etc/postgresql/[VERSION]/main/postgresql.conf

더보기

shared_preload_libraries = 'pg_stat_statements'

 

2. 쭉 내려서 아래에 다음도 추가

더보기

pg_stat_statements.track = all
pg_stat_statements.max = 10000  # Adjust the number of statements to track as needed


3. psql shell 에서 다음 명령어로 table을 생성 (정확하게는 view이지만 우선 table로 언급)

더보기

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

 

4. 생성 확인

더보기

SELECT * FROM pg_stat_statements;

 

 

pg_stat_statements의 column을 보면 query가 있다.

이게 orm이 들어왔을 때 raw query가 어떻게 실행되었는지를 보여준다. 물론 orm 뿐만 아니라 모든 query에 대해 보여준다.

 

 

vscode에서 확장팩을 통해 table이 어디 갔나 한참을 찾았는데, Tables가 아니라 Views에 있었다.

database: posgres -> view: pg_stat_statements

그리고 Functions에 view를 어떻게 구성했는지 함수가 기록되어 있다.

(사용하는 확장팩: Database Client - Weijan Chen)

 

psql에서 \l (역슬래쉬, 영어 l)을 통해 table을 볼수 있다면,

 

 

view는 \dv 명령어를 통해 확인할 수 있다.

 

사용하는 확장팩에서는 다음과 같이 확인

 

생 테이블로 보기에는 컬럼이 너무 많고, query가 긴 경우도 있어서 확장팩을 통해서 보는게 편하다.

 

생테이블

더보기

select * from pg_stat_statements;

보기 싫다 그냥...

 

확장팩

 

 

* Extensions *

 

PostgreSQL은 내장 기능 뿐만 아니라, extension을 통해 기능을 확장할 수 있다는 것을 처음 알았다.

버전에 따라 내장하는 기능이 조금씩 다르기도 하지만, 일반 유저들이 만들어서 배포도 한다고 한다.

 

아래는 pg_stat_statements에 대한 postgresql의 공식 문서 url

https://www.postgresql.kr/docs/9.4/pgstatstatements.html

 

pg_stat_statements

pg_stat_statements 모듈은 서버에서 실행 되었던 쿼리들에 대한 실행 통계 정보를 보여준다. 이 모듈을 사용하려면, 먼저 shared_preload_libraries 서버 환경 설정 값에 pg_stat_statements 값이 추가 되어 있어

www.postgresql.kr

 

아래는 postgresql extension에 대해 설명해놓은 블로그 글이다

https://bitnine.tistory.com/536

 

PostgreSQL Extension 소개

PostgreSQL에서는 Extension이라는 기능을 기반으로 DB에서 제공하지 않는 기능을 사용자가 생성 후 설치하여 DB에서 기본 제공되는 함수처럼 사용할 수 있습니다. 이 문서는 Extension 에 대해 설명하고

bitnine.tistory.com

 

728x90
반응형