본문으로 건너뛰기

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을 조회하는 기능입니다.

화면 구성

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

Search Panel 상세

순번항목내용
1Reset검색 조건을 초기화합니다.
2InstanceInstance를 선택합니다.
3Time기간 설정 최대 범위: 32일, 최소 범위: 20분
4Filters- 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 Usagemax connection 기준 대비 현재 연결된 Connection 비율
Lock Waiting ThreadsLock 대기 Thread 수
Queries DeltaDB 기동 이후 수행된 전체 SQL 수의 변화량
Innodb Buffer Pool Read RequestsBuffer Pool에서 읽은 블록 수
Innodb Buffer Pool ReadsDisk에서 읽은 블록 수
Redo Log Usageredo usage 비율
Open TablesDB 상 열린 테이블 수
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 인스턴스의 파라미터 이름 클릭 시 나타나는 상세 화면입니다.

순번항목내용
1InformationDatabase 타입 MySQL의 Parameter 정보를 보여줍니다.
Parameter Name / Description / Default / Restart
2Parameter ListParameter List를 Grid 형태로 보여줍니다.
3SearchParameter List에서 Instance Name을 검색합니다.

Grid 컬럼

컬럼명설명
Date날짜
Current Value현재 값
Prev Value이전 값
DifferentBase 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: OFF
  • slow_query_log: ON
  • long_query_time: 초 단위 변경 (기본값 10초)

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


8. 기능별 메뉴 경로 요약

분류기능메뉴 경로
사전 설정performance_schema 설정MySQL DB 파라미터 직접 설정
사전 설정Slow Query 설정MySQL DB 전역 변수 설정
SQL AnalysisTop-N AnalysisPA > Database > MySQL > SQL Analysis > Top-N Analysis
InstanceMulti ViewDatabase > MySQL > Multi View
InstanceInstance Detail SlideDatabase > MySQL > Instance 클릭
InstanceParameter DetailInstance Detail Slide > Parameter 탭 > Parameter Name 클릭
AlertMySQL Parameter Change Log 알람Setting > Alert > User Alert > Create Rule (Type: Table)
AlertMySQL Tablespace 알람Setting > Alert > User Alert > Create Rule (Type: Table)
Alert 수집 주기Metric Collection SettingSetting > Data > Metric Collection Cycle Management

참고 문서 URL