pg_stat_statements로 쿼리 성능 모니터링하기

pg_stat_statements 모듈은 PostgreSQL에서 쿼리 실행 통계 정보를 수집하고 분석하는 모듈이다. 이 모듈을 활성화하면 쿼리의 실행 횟수, 실행 시간, 실행 계획 등의 정보를 수집할 수 있다. 이를 통해 쿼리 성능을 모니터링하고 성능이 저하되는 쿼리를 찾아 최적화할 수 있다. 수집하는 정보는 다음과 같다. 쿼리 실행 횟수 (calls) 총 실행 시간 (total_time): 평균수행시간 * 실행횟수, 단위: ms 평균 실행 시간 (mean_time) 평균 블록 시간 (mean_blk_time) 행 수 (rows) 평균 행 수 (mean_rows) 등 위 데이터로 가장 자주 실행된 쿼리, 가장 오래 실행된 쿼리, 가장 많은 시간을 소비한 쿼리 등을 찾을 수 있다. 이를 토대로 성능이 저하되는 쿼리를 찾아 성능 개선을 시도해볼 수 있다. ...

2023년 7월 13일 · 3 min

Django에서 DB Connection 관리

서비스를 운영하다보면 DB Connection 관리에 대한 이슈가 종종 발생한다. 이번 포스팅에서는 DB 커넥션 풀 (DB Connection Pool)과 Django에서는 DB 커넥션을 어떻게 관리하는지 알아보겠다. DB Connection Pool DB와 애플리케이션 사이에서 DB 연결을 간소화하기 위해서 DB와 미리 연결한 커넥션(Connection) 객체들을 풀(Pool)에 저장해두었다가 요청이 들어오면 풀에서 유휴 커넥션을 꺼내 사용하고 다시 풀에 저장하는 방식을 말한다. 애플리케이션과 DB의 TCP 연결을 위해서는 3-way-handshaking이 필요하다. 매 연결마다 이를 수행하면 비용이 커지므로 비용을 줄이기 위해 DB Connectio Pool 방식을 사용한다. ...

2022년 12월 11일 · 4 min