본문으로 건너뛰기
데이터베이스 기초집LESSON 20

로그·모니터링·느린 쿼리 점검

난이도초급 → 중급
예상 시간35분
선수지식이전 강의

20강. 로그·모니터링·느린 쿼리 점검

1. 이번 강의에서 해결할 문제​

API가 느려졌을 때 CPU나 인덱스를 추측으로 바꾸면 원인을 악화시킬 수 있습니다. 연결 대기, 오래 열린 트랜잭션, 순차 스캔, 사용되지 않는 인덱스와 상위 비용 쿼리를 관찰하는 순서를 만듭니다.

2. 학습 목표​

3. 핵심 개념​

모니터링은 지연 시간, 처리량, 오류, 포화도를 함께 봅니다. PostgreSQL 누적 통계 뷰는 연결 상태와 스캔·행 변경 패턴을 보여줍니다. pg_stat_statements는 정규화된 쿼리별 실행 통계를 제공하지만 확장 활성화와 shared_preload_libraries 설정이 필요할 수 있습니다. 로그에는 비밀과 개인정보가 남지 않도록 파라미터 기록 정책을 검토합니다.

4. 단계별 예시​

파일 경로: C:\dev\game-ranking-service\database\sql\20-health.sql

database/sql/20-health.sql
SELECT pid, usename, application_name, state,
now() - xact_start AS transaction_age,
wait_event_type, wait_event
FROM pg_stat_activity
WHERE datname = current_database()
ORDER BY xact_start NULLS LAST;

SELECT schemaname, relname, seq_scan, idx_scan,
n_live_tup, n_dead_tup
FROM pg_stat_user_tables
ORDER BY seq_scan DESC;

SELECT schemaname, relname, indexrelname, idx_scan
FROM pg_stat_user_indexes
ORDER BY idx_scan, indexrelname;
PowerShell · 진단 보고서 저장
New-Item -ItemType Directory -Force .\reports
psql -d game_ranking_dev -f .\database\sql\20-health.sql | Tee-Object .\reports\database-health.txt

5. 동작 원리​

오래 열린 트랜잭션은 연결과 잠금을 점유하고 오래된 행 버전 정리를 방해할 수 있습니다. seq_scan이 높다는 사실만으로 문제는 아니며 작은 테이블은 순차 스캔이 더 효율적입니다. 느린 엔드포인트를 쿼리 지문과 연결하고 대표 파라미터로 실행 계획을 재현해야 원인과 개선 효과를 설명할 수 있습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

로그·모니터링·느린 쿼리 점검 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“로그·모니터링·느린 쿼리 점검” 실습을 안전하게 진행하기 위한 판단으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘통계 한 번만 보고 인덱스 삭제’ 상태에 관한 “로그·모니터링·느린 쿼리 점검” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

20강. 로그·모니터링·느린 쿼리 점검 미완료 상태