MySQL 성능 분석
exemONE MySQL Database 성능 분석 기능 상세 설명
메뉴 경로: Performance Analysis > Database > MySQL
0. MySQL 모니터링 사전 설정 (필수)
MySQL 성능 분석 기능을 정상적으로 사용하려면 아래 사전 설정이 필요합니다.
파라미터 설정 (DB 재기동 필요)
performance_schema = ON
max_digest_length = 4096 -- SQL digest 저장 최대 길이 확대 (Default: 1024)
performance_schema_max_digest_length = 4096
performance_schema_max_sql_text_length = 4096
Slow Query 수집 설정
set global slow_query_log = on
set global slow_query_log_file = {slow query 로그 파일 경로}
set global long_query_time = {초}
CPU time / Event wait 수집 설정
지원 버전: MySQL 8.0.28 이상 (MariaDB는 미지원)
performance_schema.setup_consumers 테이블의 events_transactions%, events_statements_% 항목과 performance_schema.setup_instruments 테이블의 events_waits%, wait/% 값이 'YES' 일 경우 수집됩니다. DB 재기동 없이 적용 가능합니다. (기본값: 'NO')
1. SQL Analysis (SQL 분석)
1-1. Top-N Analysis
메뉴 경로: Performance Analysis > Database > MySQL > SQL Analysis > Top-N Analysis
Stacked Area Chart를 활용하여 특정 기간 동안의 Top SQL을 조회하는 기능입니다.

화면 구성
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Search Panel | 버튼 클릭 시 검색 패널이 나타납니다. |
| 2 | Search Result | 검색 패널에서 선택한 조건이 상단에 텍스트로 표시됩니다. |
| 3 | Chart | 검색 조건에 따른 일자별 Trend Chart를 보여줍니다. |
| 4 | Top N SQL | 검색 패널의 Group By 조건에 따라 상위 10건 또는 20건을 보여주며, Order By 조건에서 선택한 항목의 내림차순으로 정렬됩니다. 상위 SQL에서 최상단 행이 선택됩니다. |
| 5 | Top 5 Schema | Group By=Schema 선택 시 표시됩니다. 상위 5건을 Order By 조건 내림차순으로 정렬합니다. |
| 6 | Full Text | 상위 N SQL Grid에서 선택한 행의 SQL Full Text 정보를 보여줍니다. 버튼 클릭 시 SQL Full Text 화면이 슬라이드로 나타나며, 클릭 시 Text를 복사합니다. |
Search Panel 상세

| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Reset | 검색 조건을 초기화합니다. |
| 2 | Instance | Instance를 선택합니다. |
| 3 | Time | 기간 설정 최대 범위: 32일, 최소 범위: 20분 |
| 4 | Filters | - Group By: Digest (Default) / Schema - Order By: 정렬 기준 선택 |
2. MySQL Instance 실시간 모니터링
2-1. Multi View (다중 인스턴스 모니터링)
메뉴 경로: Database > MySQL > Multi View
다수의 MySQL 서버를 동시에 모니터링할 수 있는 화면입니다. 하나의 데이터베이스를 선택하면 Overview, DB Session Type, Rank 등이 선택된 데이터베이스 데이터로 변경되어 단일 DB에 대한 집중 모니터링이 가능합니다.

1) Overview
폴더에 속한 인스턴스의 CPU, Memory, 주요 성능 지표를 함께 확인할 수 있습니다. Alert 발생 시 해당 인스턴스에 Alert Level에 따라 색 표시가 됩니다.
1-1) DB Session Type
Active Session, Long Session, Lock Session을 색상으로 구분하여 실시간으로 각 Session 상태별 분포를 통해 데이터베이스에서 진행 중인 작업 형태와 waiting 여부를 판단합니다.

2) Rank
주요 성능 6가지를 선별하여 직관적인 모니터링이 가능합니다. 타이틀 클릭 시 인스턴스별 순위 및 성능 데이터를 비교하여 인스턴스별 비율과 10분 추이를 확인할 수 있습니다.

Sort Merge Passes (Count)
Sort merge passes 수를 보여줍니다. MySQL에서 정렬하려는 데이터가 Sort Buffer보다 큰 경우 데이터를 여러 조각으로 나누어 처리하며, 임시 저장을 위해 디스크를 사용합니다. 디스크 성능은 메모리보다 느리므로 실제 쿼리 요청이 느려질 수 있어 sort merge passes 발생 여부를 모니터링해야 합니다. 인스턴스 클릭 시 sort merge passes 수가 높은 SQL을 확인할 수 있는 'Top 10 Sorting List' 창으로 연계됩니다.
2-2. Instance Detail Slide (인스턴스 상세)
메뉴 경로: Database > MySQL > Instance 클릭 > Instance Detail Slide
MySQL 인스턴스의 상세 지표를 실시간으로 확인합니다.

Metric 탭 주요 지표
| 지표명 | 설명 |
|---|---|
| Active Threads | 현재 실행 중인 Thread 수 |
| Connection Usage | max connection 기준 대비 현재 연결된 Connection 비율 |
| Lock Waiting Threads | Lock 대기 Thread 수 |
| Queries Delta | DB 기동 이후 수행된 전체 SQL 수의 변화량 |
| Innodb Buffer Pool Read Requests | Buffer Pool에서 읽은 블록 수 |
| Innodb Buffer Pool Reads | Disk에서 읽은 블록 수 |
| Redo Log Usage | redo usage 비율 |
| Open Tables | DB 상 열린 테이블 수 |
| Create Temp Disk Ratio | 임시 테이블이 물리적 disk에 생성된 비율 |
| TPS | 초당 트랜잭션의 수 |
| Buffer Pool Hit Ratio | 총 메모리에서의 Buffer Pool Hit 비율 |
3. Parameter Detail Slide (파라미터 상세)
메뉴 경로: Database > MySQL > Instance Detail Slide > Parameter 탭 > Parameter Name 클릭
MySQL 인스턴스의 파라미터 이름 클릭 시 나타나는 상세 화면입니다.

| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Information | Database 타입 MySQL의 Parameter 정보를 보여줍니다. Parameter Name / Description / Default / Restart |
| 2 | Parameter List | Parameter List를 Grid 형태로 보여줍니다. |
| 3 | Search | Parameter List에서 Instance Name을 검색합니다. |
Grid 컬럼
| 컬럼명 | 설명 |
|---|---|
| Date | 날짜 |
| Current Value | 현재 값 |
| Prev Value | 이전 값 |
| Different | Base Date 대비 Compare Date의 값 차이 (False: 변동 없음, True: 변경됨) |
4. MySQL 관련 알람 (Alert) 기능
4-1. MySQL Parameter Change Log 알람 (Table 알람)
메뉴 경로: Setting > Alert > User Alert > Create Rule (Type: Table)
MySQL Parameter 변경 이력 기반 알람을 설정할 수 있습니다.
필수 설정 조건:
- Check Interval: 1시간
- Check Hold Time: 0초
MySQL Parameter 수집 주기 설정:
Setting > Data > Metric Collection Cycle Management > Metric Collection Setting

4-2. MySQL Tablespace 알람
메뉴 경로: Setting > Alert > User Alert > Create Rule (Type: Table)
MySQL Tablespace 사용량 기반 알람 설정이 가능합니다.
- Check Interval: 1분 이상 설정 가능 (부하 최소화 목적)
- Check Hold Time: 10분 이상 필수 설정 (최근 10분 데이터 기준으로 알람 발생)
5. MySQL 버전별 모니터링 지원 스펙
5-1. MySQL/MariaDB 5.5 제한 사항
중요 지표인 Thread, SQL 등의 관련 데이터들이 전부 모니터링 불가합니다.
모니터링 불가 기능:
AccountExecutorQuery— 사용 불가LockTreeMetaExecutorQuery— 호환 불가SqlStatExecutorQueryAndMaria— 테이블 없음ThreadExecutorQuery— 테이블 없음TopOldTransactionQuery— 테이블 없음TopSortMergeQuery— 테이블 없음TopTempSessionQuery— 테이블 없음UndoExecutorQuery— 테이블 없음- KillSession (Azure/NCP/RDS) — 미지원
모니터링 불가 화면:
- Instance Detail — Active Session, SQL List, Meta Lock Info, Metric - Active Threads 모니터링 불가

- Session Detail — 모니터링 불가
- SQL Detail — 모니터링 불가
- Multi View — DB Session Type, Rank > Session Temp Usage(Size), Session Tab 모니터링 불가

5-2. MySQL/MariaDB 5.6 제한 사항
모니터링 불가 기능:
LockTreeMetaExecutorQuery— 호환 불가LockWaitingExecutorQuery— 테이블 없음ThreadExecutorQuery— 테이블 없음TopOldTransactionQuery— 테이블 없음TopSortMergeQuery— 테이블 없음TopTempSessionQuery— 테이블 없음UndoExecutorQuery— 테이블 없음
모니터링 불가 화면:
- Instance Detail — Active Session, SQL List, Meta Lock Info, Metric - Active Threads 모니터링 불가

- PA > Search Session — 모니터링 불가

- Multi View — DB Session Type, Rank > Session Temp Usage(Size), Session Tab 모니터링 불가
- Single View — SQL & Query Error, Overview > Active Count, Session Tab 모니터링 불가
6. MySQL Parameter 데이터 이관 (참고 사항)
MySQL Parameter Detail 조회 성능 개선에 따라 기존 mysql_param_v1 테이블 데이터를 mysql_param_v2 테이블로 이관이 필요합니다. 신규 데이터는 mysql_param_v2에 수집됩니다.
이관 스크립트 실행 방법:
# -i: instance_id (미 입력 시 전체 인스턴스 대상으로 실행)
# 시간은 'YYYY-MM-DD HH:MM:SS' 형식으로 입력
# 데이터 확인 후 최대한 좁은 범위로 여러 번 수행
./mysql_param_copy.sh -i '{instance_id}' '2024-10-29 15:00:00' '2024-10-31 15:00:00'
7. Azure MySQL 등록 및 연동
메뉴 경로: Setting > Database > Azure Database for MySQL 등록
Azure MySQL 사용 시 아래 사전 설정이 필요합니다.
Azure MySQL TLS 및 Slow 쿼리 설정:
require_secure_transport: OFFslow_query_log: ONlong_query_time: 초 단위 변경 (기본값 10초)

TLS 연결 유지 시: Custom Configuration >
mysql.azure_ssl값을true로 설정

8. 기능별 메뉴 경로 요약
| 분류 | 기능 | 메뉴 경로 |
|---|---|---|
| 사전 설정 | performance_schema 설정 | MySQL DB 파라미터 직접 설정 |
| 사전 설정 | Slow Query 설정 | MySQL DB 전역 변수 설정 |
| SQL Analysis | Top-N Analysis | PA > Database > MySQL > SQL Analysis > Top-N Analysis |
| Instance | Multi View | Database > MySQL > Multi View |
| Instance | Instance Detail Slide | Database > MySQL > Instance 클릭 |
| Instance | Parameter Detail | Instance Detail Slide > Parameter 탭 > Parameter Name 클릭 |
| Alert | MySQL Parameter Change Log 알람 | Setting > Alert > User Alert > Create Rule (Type: Table) |
| Alert | MySQL Tablespace 알람 | Setting > Alert > User Alert > Create Rule (Type: Table) |
| Alert 수집 주기 | Metric Collection Setting | Setting > Data > Metric Collection Cycle Management |
참고 문서 URL
- MySQL/MariaDB 사전 설정 가이드: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3099558
- MySQL PA > SQL Analysis > Top-N Analysis (메뉴얼): https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-2693218
- MySQL/MariaDB 5.5 모니터링 스펙: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-2833338
- MySQL/MariaDB 5.6 모니터링 스펙: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3336798
- MySQL Parameter Detail Slide (메뉴얼): https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-2690958
- MySQL Parameter 데이터 이관 가이드: https://app.clickup.com/25540965/v/dc/rbeb5-403538/rbeb5-2679858
- Table Alert 등록 가이드 (MySQL Parameter Change Log / Tablespace): https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3111478
- Azure Database for MySQL 등록 가이드: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3345278
- Dashboard 위젯 링크로 MySQL PA 연계 가이드: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3107578