Database

PostgreSQL | 모니터링 SQL 정리

이진유진 2024. 2. 27. 17:38
반응형
유용한 모니터링 SQL 쿼리들을 정리하려고 합니다. 

1. pg_stat_activity - 현재 실행중인 쿼리와 세션 정보

SELECT * FROM pg_stat_activity;

 

PostgreSQL 서버에서 현재 실행중인 활동 및 세션 정보를 제공합니다. 

 

datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state, waiting, state_change, query 등이 포함될 수 있습니다.

 

2. pg_stat_user_indexes - 인덱스 사용률 확인

SELECT relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch
FROM pg_stat_user_indexes;

 

특정 테이블의 인덱스 스캔 횟수 및 읽은, 가져온 행 수 등을 통해 인덱스의 활용 정도를 확인할 수 있습니다. 

 

3. 테이블 로우 개수 및 크기

SELECT relname, n_live_tup, pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_stat_user_tables;

 

특정 테이블의 현재 로우 수와 테이블의 총 크기를 확인하여 테이블의 크기 및 데이터 분포를 파악할 수 있습니다. 

 

4. 쿼리 실행 계획 분석 

EXPLAIN ANALYZE <your_query>;

 

쿼리 실행 계획을 자세히 분석하여 쿼리의 실행 속도와 최적화 가능성을 평가할 수 있습니다. 

 

5. 버퍼 캐시 히트율 확인 

SELECT (sum(heap_blks_hit) - sum(heap_blks_read)) / sum(heap_blks_hit + heap_blks_read) AS buffer_cache_hit_ratio
FROM pg_statio_user_tables;

 

히트된 힙 블록 수와 읽힌 힙 블록 수를 통해 데이터베이스의 버퍼 캐시 히트율을 평가할 수 있습니다.

 

6. 인덱스 히트율 확인 

SELECT idx_scan, idx_tup_read, idx_tup_fetch,
       (idx_tup_read + idx_tup_fetch) / NULLIF(idx_scan, 0) AS index_hit_ratio
FROM pg_stat_user_indexes;

 

인덱스 스캔 횟수, 읽은 행 수, 가져온 행 수를 통해 인덱스의 효율성 및 히트율을 확인할 수 있습니다. 

  • idx_scan : 인덱스 스캔 횟수
  • idx_tup_read : 읽은 행 수 
  • idx_tup_fetch : 가져온 행 수 
  • index_hit_ratio : 인덱스 히트율(인덱스 스캔 횟수 대비 인덱스에서 가져온 행의 비율)

7. 연결된 클라이언트 정보 및 연결 수 

SELECT usename, client_addr, client_port, count(*) AS connection_count
FROM pg_stat_activity
GROUP BY usename, client_addr, client_port;

 

현재 연결된 클라이언트들의 정보와 해당 클라이언트와의 연결 수를 확인할 수 있습니다. 

 

 

8. 테이블별 행 추가 및 갱신 정보 

SELECT relname, n_tup_ins, n_tup_upd
FROM pg_stat_user_tables;

 

특정 테이블에 추가된 행 수 와 갱신된 행 수를 통해 데이터베이스의 활동과 업데이트 패턴을 파악할 수 있습니다. 

반응형