pg_profile.png

성능 측정 툴 중 하나인 pg_profile에 대해 다음과 같은 순서로 차근차근 알아보겠습니다.

pg_profile 개요

pg_profile은 postgresql 데이터베이스에서 리소스를 가장 많이 사용하는 활동을 찾는데 도움이됩니다.

extension 형태로 설치가 되며, pg_stat_statements가 제공하는 통계 뷰를 기반으로 합니다. pg_profile은 pl/pgsql로 작성되었으며, 외부라이브러리나 소프트웨어가 필요하지 않지만 스케줄링 작업을 수행하는 cron과 유사한 툴이 필요합니다. pg_stat_kcache라는 extension이 설치되어있다면, SQL의 CPU 사용량 및 파일 시스템 로드에 대한 정보도 추가로 제공 가능합니다.

pg_profile은 데이터베이스 내 테이블을 repository로 가지고 있으며 이 repository는 postgresql 클러스터에 대한 스냅샷 개념의 "sample"을 보유하게됩니다. sample은 함수를 사용해 호출됩니다.

sample을 채취할 때마다 ***pg_stat_statements_reset()***이 호출되어, pg_stat_statements.max에 도달할 때까지 명령문이 느슨해지지 않도록 잡아줍니다. 또한 report에는 sample에서 캡처된 명령문이 pg_stat_statements.max의 90%에 도달하면 알려주는 section이 포함됩니다.

한 클러스터에 설치된 pg_profile은 별도의 명칭을 지정할 수 있는 "server"를 통해 다른 클러스터에서 통계를 수집할 수 있습니다. (대상서버 외 pg_profile용도의 repository서버 구성 가능)

** pg_stat_statements_reset() : 지금까지 수집된 통계를 버리는 함수

** pg_stat_statements.max : postgresql.conf에 설정하는 매개변수로, pg_stat_statments 모듈이 추적하는 명령문의 최대 수. max값을 넘어서는 명령문이 관찰되면 가장 적게 실행된 명령문에 대한 정보가 삭제됨

pg_profile 특징