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
아래는 postgresql extension에 대해 설명해놓은 블로그 글이다
https://bitnine.tistory.com/536
'Database > PostgreSQL' 카테고리의 다른 글
PostgreSQL: password 안전하게 사용하기 # PGPASSWORD # .pgpass # .env (1) | 2024.12.03 |
---|---|
PostgreSQL: query 기록하고 보기 - log파일로 보기 # /var/log/postgresql (0) | 2024.01.09 |
DB Table 모두 지우고 리셋 # schema (0) | 2023.03.05 |
PostgreSQL install ~ begin with Django: Linux(Ubuntu) (0) | 2022.12.30 |
PostgreSQL Tutorial 사이트 (0) | 2022.12.04 |