conf파일을 수정하여 오래 걸린 쿼리를 찾기 위해 기록 남기기 설정
저의 경우 Centos 7을 활용하고 있으며, PostgreSQL 설정 파일은 PostgreSQL 설치 위치에 존재 (제 경우엔 /var/lib/pgsql/9.6/data에 postgresql.conf 파일이 있습니다)
해당 파일을 vi편집기 또는 텍스트 편집기를 이용하여 'log_min_duration_statement'의 값을 설정해줍니다 (저는 7초 이상 걸린 쿼리의 로그를 찍겠습니다)
- log_min_duration_statement 앞에 '#' 이 붙어있으면 지워주세요.
log_min_duration_statement = [시간(ms)]
변경이 끝났으면 pg의 설정값을 재로딩 해야합니다.
해당 SQL문을 사용하여 서버 재가동 없이 로딩이 가능합니다
SELECT pg_reload_conf();
- conf파일의 일부 설정은 서버 재가동이 필요하며, reload 만으로는 적용되지 않는 설정도 있습니다.
설정 및 리로드가 완료되고, 슬로우 쿼리가 발생하면 로그 파일에 기록되며, pg가 설치된 폴더 (제 경우엔 /var/lib/pgsql/9.6/data/pg_log)에서 로그 파일을 확인할 수 있습니다.
요일별로 로그가 분리되어 있고, 설정시간 이상의 슬로우 쿼리가 발생하였던 제 서버에는 로그가 남아있습니다.
해당 쿼리가 무엇 때문에 오래 걸렸는지, 확인 후 조치하여 현재 제 서버의 문제점은 해결되었습니다.
작은 도움이라도 되셨길 바랍니다.
'개발 > DataBase' 카테고리의 다른 글
PostgreSQL 락(Lock) 상태 확인, 락 걸려서 동작 못하는 경우 확인 (0) | 2021.07.23 |
---|---|
PostgreSQL 오래걸리는 쿼리 확인, 작업취소 (0) | 2021.07.22 |
SQL - SELECT 결과로 INSERT 하기 (0) | 2021.07.07 |