본문 바로가기
카테고리 없음

성능 모니터링 도구 활용 (DBMS별)

by 유형제맘 2025. 8. 16.

데이터베이스 성능 문제를 조기에 발견하고 최적화하기 위해서는 DBMS별 모니터링 도구 활용이 필수입니다.
이번 글에서는 Oracle, PostgreSQL, MySQL, SQL Server 각각의 모니터링 방법과 활용 전략을 정리합니다.


1. Oracle

  • v$session: 현재 세션 상태, 대기 이벤트 확인
  • v$sqlarea: 캐시된 SQL, 실행 횟수, 파싱 정보 확인
  • AWR (Automatic Workload Repository): 성능 통계, 보고서 생성
  • ASH (Active Session History): 실시간 세션 분석
  • 모니터링 팁: CPU/IO 과다 사용 세션, 병목 쿼리 확인 → 인덱스, 통계, 바인딩 변수 활용

예시 SQL:
SELECT sql_id, executions, parse_calls, disk_reads, buffer_gets FROM v$sqlarea ORDER BY buffer_gets DESC;


2. PostgreSQL

  • pg_stat_activity: 현재 연결, 쿼리 상태 확인
  • pg_stat_statements: SQL 실행 통계, 소프트/하드 파싱 추적
  • EXPLAIN / EXPLAIN ANALYZE: 실행 계획 확인
  • 모니터링 팁: 느린 쿼리 로그 활성화, 인덱스/조인 순서 점검, 통계 최신화

예시 SQL:
SELECT query, calls, total_time, rows FROM pg_stat_statements ORDER BY total_time DESC;


3. MySQL

  • performance_schema: 세션, 쿼리, 인덱스 통계 확인
  • SHOW PROCESSLIST: 현재 실행 쿼리, 상태 확인
  • EXPLAIN / EXPLAIN ANALYZE: 쿼리 실행 계획 확인
  • 모니터링 팁: 느린 쿼리 로그 활성화, 인덱스 활용, JOIN 최적화

예시 SQL:
SELECT digest_text, count_star, sum_timer_wait FROM performance_schema.events_statements_summary_by_digest ORDER BY sum_timer_wait DESC;


4. SQL Server

  • sys.dm_exec_requests: 현재 요청 상태, 대기 이벤트 확인
  • sys.dm_exec_query_stats: 캐시된 SQL 실행 통계 확인
  • SQL Server Profiler / Extended Events: 실시간 트레이스
  • 모니터링 팁: 인덱스 사용률, 파라미터 스니핑 확인, 통계 최신화

예시 SQL:
SELECT TOP 10 qs.total_worker_time, qs.execution_count, st.text FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st ORDER BY qs.total_worker_time DESC;


5. 실전 활용 전략

  1. 주기적 모니터링: 일일/주간 보고서 자동 생성
  2. 상위 부하 SQL 우선 분석: CPU, IO, 응답 시간 기준
  3. 실행 계획 비교: 튜닝 전후 확인
  4. 통계 최신화와 히스토그램 관리: 옵티마이저 정확도 향상
  5. 바인딩 변수/커서 활용 점검: 커서 공유, 하드 파싱 최소화

6. 마무리

  • DBMS별 모니터링 도구 활용은 성능 문제 조기 발견 → 원인 진단 → 최적화로 이어집니다.
  • 실무에서는 주기적 보고서 + 실시간 모니터링을 함께 활용하여 안정적인 시스템 운영을 확보하는 것이 핵심입니다.
  • 다음 학습: 파티셔닝과 커서/바인딩 상호작용, 또는 통계 수집 전략 심화