[태그:] MySQL 쿼리 최적화

  • MySQL Performance Schema 완벽 가이드 | 실시간 쿼리 모니터링과 성능 분석 (2025 최신판)

    MySQL Performance Schema는 MySQL의 쿼리 실행 단계를 실시간으로 분석하는 핵심 기능입니다. 이 가이드에서는 구조, 주요 테이블, Aurora 및 MariaDB 환경의 차이, 그리고 실무 튜닝 전략을 다룹니다.


    ⚙️ 1. MySQL Performance Schema란?

    MySQL Performance Schema는 MySQL 내부에서 쿼리 실행 과정의 세부 데이터를 수집·저장하는 기능입니다.
    단순 로그보다 더 세밀하게 스레드, 이벤트, 잠금 대기, CPU 시간 등을 기록하여
    쿼리 성능 병목을 정확히 파악할 수 있습니다.

    💡 Performance Schema는 information_schema와 달리 “실시간 성능 데이터”를 저장합니다.


    🧩 2. MySQL Performance Schema 활성화 설정

    Performance Schema는 MySQL 5.6 이상에서 기본적으로 포함되지만,
    명시적으로 활성화해야 작동합니다.

    SHOW VARIABLES LIKE 'performance_schema';
    SET GLOBAL performance_schema = ON;
    

    my.cnf 설정 예시

    [mysqld]
    performance_schema=ON
    performance_schema_instrument='%=ON'
    performance_schema_consumer_events_statements_history=ON
    

    💡 Aurora MySQL은 기본적으로 활성화되어 있으며,
    MariaDB에서는 일부 이벤트만 지원됩니다 (performance_schema_max_table_instances 옵션 참고).


    📊 3. 주요 MySQL Performance Schema 테이블 분석

    Performance Schema에는 수백 개의 테이블이 존재하지만,
    실무에서 가장 많이 쓰이는 것은 아래 3개입니다.

    테이블명설명활용 예시
    events_statements_history_longSQL 실행 이력슬로우 쿼리 및 CPU 사용량 분석
    threads활성 스레드 목록특정 사용자 세션 추적
    events_waits_summary_global_by_event_name자원 대기 통계잠금(Lock) 병목 파악
    SELECT * FROM performance_schema.events_statements_history_long
    WHERE SQL_TEXT LIKE '%SELECT%' LIMIT 5;
    

    🧮 4.MySQL Performance Schema로 실시간 쿼리 분석하기

    Performance Schema를 활용하면 슬로우 쿼리 로그 없이도
    현재 실행 중인 쿼리의 상태를 즉시 확인할 수 있습니다.

    SELECT EVENT_NAME, TIMER_WAIT, SQL_TEXT
    FROM performance_schema.events_statements_current;
    

    Aurora MySQL에서는 Performance Insights와 연계되어
    실시간 모니터링 대시보드 형태로 시각화됩니다.

    📈 Performance Schema는 단일 쿼리의 CPU 사용률, I/O Wait, 메모리 소비량까지 추적이 가능합니다.

    MySQL Performance Schema 구조 다이어그램 — 쿼리 실행 흐름, 스레드, 대기 이벤트를 시각화한 데이터베이스 성능 모니터링 인포그래픽

    🔍 5.MySQL Performance Schema vs Slow Query Log

    항목Performance SchemaSlow Query Log
    분석 범위전체 쿼리 이벤트느린 쿼리만
    실시간성즉시 조회 가능로그 수집 후 분석
    Aurora 통합Performance Insights 연계제한적
    CPU/Wait 정보포함미포함

    💡 실시간 모니터링은 Performance Schema,
    장기 트렌드 분석은 Slow Query Log로 병행하는 것이 최적입니다.


    🧠 6. Aurora / MariaDB 환경의 차이점

    • Aurora MySQL
      • Performance Schema가 CloudWatch와 자동 연동됩니다.
      • innodb_buffer_pool_stats 테이블과 병합된 모니터링 제공.
    • MariaDB
      • 일부 Performance Schema 테이블이 Aria/XtraDB로 대체.
      • performance_schema=ON 설정 시 약간의 CPU 오버헤드 발생 가능.

    ⚡ 7. 실무 Performance Schema 튜닝 전략

    • 필요한 Instrument만 활성화 (%statement/%wait/io 중심)
    • performance_schema_digests_size 조정으로 SQL 패턴 누락 방지
    • Aurora에서는 Performance Insights와 병행 → 오버헤드 10% 이하 유지

    💡 TIP: sys 스키마와 결합하면 자동화된 뷰(sys.user_summary_by_statement_latency)로 요약 조회 가능.


    💬 8. 마무리

    Performance Schema는 MySQL 성능 분석의 핵심 도구입니다.
    쿼리의 실행 단계별 리소스 소비를 시각적으로 분석할 수 있으며,
    Aurora·MariaDB 환경에서도 튜닝 효율을 극대화할 수 있습니다.

    👉 다음 글에서는
    “MySQL sys 스키마를 이용한 자동 성능 진단 및 보고서 생성 가이드 (2025)”
    를 다룰 예정입니다.


    📚 5. 참고 링크