MySQL
Single View는 실시간으로 특정 하나의 데이터베이스에 대해 다양한 관점에서 성능 상태를 확인할 수 있습니다.
- CPU 및 Connection 정보를 확인합니다.
- Slow Query를 분석합니다.
- 데이터베이스 성능 지표의 Trend를 확인합니다.
- 최근 10분 동안 급증한 SQL, Event 지표를 확인합니다.
- Table/Index Scan 비율을 확인합니다.
- 사용자 Alert, Vacuum, Replication, Checkpoint 등 주요 관리 포인트를 확인합니다.
- Temp, Tablespace Size, 변경된 Parameter, 통계정보 등 추가 관리 포인트를 확인합니다.

| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Grouping Summary | 데이터베이스 지표, Event통계, SQL 실행 정보, Object scan type별 집계 등 다양한 관점의 집계된 데이터를 통해 장애 원인을 추적할 수 있습니다. |
| 2 | Overview | 데이터베이스 전체 Connection에 대한 사용 패턴과 각 사용 상태에 대한 Backends 정보, CPU, Memory사용률을 제공합니다. |
| 3 | Real Time Monitor | 데이터베이스의 활동성 및 지연에 관한 지표들을 이용하여 Chart 형식의 모니터링을 할 수 있습니다. 기본적으로 4개의 주요 성능 지표에 대해 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능 지표로 변경 및 확장이 가능합니다. |
Grouping Summary
데이터베이스 지표, Event통계, SQL 실행 정보, Object scan type별 집계 등 다양한 관점의 집계된 데이터를 통해 장애 원인을 추적할 수 있습니다.
1) Statistics & Event
Overview나 Trend 항목에서 비정상적인 상황을 인지했을 때, Statistics & Events 항목에서 최근 급증한 데이터베이스 지표를 확인하여 원인을 추적할 수 있습니다.

Statistics : MySQL에서 제공하는 성능지표 Event : MySQL에서 제공하는 대기 관련지표
1-1) Top Diff Statistics(Sum) for 10 min
최근 10분 데이터를 비교하여 변화량을 기준으로 비율이 가장 높은 지표 Top 5를 보여줍니다. 지표명/변동 비율/변동값 순으로 정보를 확인할 수 있습니다.

Statistics row 클릭 시 성능지표의 30분 이전부터 현재 시간까지의 1분 Summary max, avg 값을 팝업 차트로 볼 수 있습니다.

1-2) Top Event for 10 min
성능 스키마의 events_waits_summary_global_by_event_name 테이블에서 수집한 데이터 중 최근 10분동안의 총 대기 시간 변화가 큰 event Top5를 보여줍니다. 순위/event 명/event 발생 횟수/event 총 대기 시간 변화량 순으로 정보를 확인할 수 있습니다.

event row 클릭 시 총 대기 시간 변화가 큰 event 목록을 볼 수 있습니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Event Name | 가장 대기시간이 많은 순으로 정렬된 Event 명 |
| 3 | Count | Event 발생 Count |
| 4 | Wait Time (sec) | 초당 Event Wait time 합계 |
| 5 | Avg Wait Time (sec) | 초당 Event Wait time 평균 값 |
2) SQL & Query Error
최근 10분 데이터를 비교하여, 기본 event 대기시간의 변화량과 오류 또는 경고 횟수를 기준으로 TOP SQL을 확인할 수 있습니다.

2-1) Top SQL for 10min Order By Total Latency
성능스키마의 events_statements_summary_by_digest 테이블에서 수집한 데이터 중 최근 10분 동안 정렬 조건 기준으로 변화량이 큰 SQL top5를 보여줍니다. 순위/Digest/SQL 호출 횟수/SQL 총 대기시간 변화량 순으로 정보를 확인할 수 있습니다.

Total Latency를 클릭 시 정렬 조건을 변경할 수 있고, 정렬 조건에 따라 데이터가 변경됩니다.

performance_schema 설정이 필요합니다. Top SQL 정렬 기준: Total Latency, Max Latency, Tmp Disk Tables, Sort Merge Passes
Top SQL row클릭 시 SQL 성능정보, SQL Text 및 Plan 정보를 확인 할 수 있는 ‘SQL Detail’ 슬라이드로 연계 됩니다.

2-2) Top SQL for 10min Order By Error Count
최근 10분 동안 정렬 조건 기준으로 변화량이 큰 SQL을 보여줍니다. Digest / 명령문 실행 횟수 순으로 정보를 확인할 수 있습니다.

Error Count를 클릭 시 정렬 조건을 변경할 수 있고, 정렬 조건에 따라 데이터가 변경됩니다.

performance_schema 설정이 필요합니다. Top SQL 정렬 기준: Error Count, Warn Count
Top SQL row 클릭 시 Error Count 변화량이 큰 SQL을 확인할 수 있는 ‘Top 10 SQL List Order by Warn Count’ 팝업창으로 연계됩니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Query | 실행 Query |
| 3 | Exec Count | 실행 횟수 |
| 4 | Errors | Error 발생 횟수 |
| 5 | Error Percent | Error 발생 횟수 비율 |
| 6 | Warnings | Warning 발생 횟수 |
| 7 | Warnings Percent | Warning 발생 횟수 비율 |
| 8 | Digest | Digest |
3) Scan Type
성능지표를 확인하여 Table Full Scan과 Index를 효율적으로 사용하지 못한 부분에 대한 추이를 제공합니다.
차트 변화를 통해 테이블에 적절한 인덱스가 있는지 판단할 수 있습니다.

차트 클릭 시 SQL scan 정보를 볼 수 있는 ‘Top 10 SQL Full Scan List’ 팝업창으로 연계됩니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Digest | Digest |
| 3 | Query | 실행 Query |
| 4 | DB | DB 이름 |
| 5 | Sum No Index Used | 인덱스를 사용하지 않고 테이블 스캔을 수행한 경우1, 그렇지 않은 경우 0 |
| 6 | Sum No Good Index Used | 좋은 인덱스를 찾지 못한 경우 1, 그렇지 않은 경우 0 |
| 7 | Exec Count | 실행 횟수 |
| 8 | Err Count | 오류 발생 횟수 |
| 9 | Warn Count | 경고 발생 횟수 |
| 10 | Avg Latency (sec) | 평균 수행 시간 (초) |
| 11 | Total Latency (sec) | 총 수행 시간 (초) |
| 12 | Max Latency (sec) | 최대 수행 시간 (초) |
| 13 | Lock Latency (sec) | 테이블 Lock 경과 시간의 총 시간 (초) |
| 14 | Rows Sent | 명령문에 의해 반환된 행 수 |
| 15 | Rows Affected | 명령문의 영향을 받는 행 수 |
| 16 | Rows Examined | 서버 계층에서 검사한 행 수(스토리지 엔진 내부의 처리는 포함하지 않음) |
| 17 | Tmp Tables | 명령문을 실행하는 동안 서버에서 생성한 임시 테이블 수 |
| 18 | Tmp Disk Tables | 명령문을 실행하는 동안 디스크에서 생성한 임시 테이블 수 |
| 19 | Sort Merge Passes | Sort buffer 크기보다 정렬 데이터가 큰 경우 Disk Temp 영역을 사용해 여러 조각으로 나누어서 처리한 수 |
4) Trend Summary
최근 데이터를 Summary해서 분석된 정보를 제공합니다. 해당 영역을 통해 지표의 추이가 고르게 분포되어 있는지, 평소와는 다른 패턴으로 사용된 지표가 있는지 등을 판단하여 전반적인 서버의 상태를 확인할 수 있습니다.

막대 그래프 클릭 시 해당 지표의 30분 동안의 추이를 확인할 수 있습니다.

클릭 시 원하는 지표로 변경할 수 있습니다.

5) Overview
데이터베이스의 전체 Connection에 대한 사용 패턴과 각 사용 상태에 대한 Thread정보, CPU, Memory 사용률을제공 합니다.

5-1) Connection View
Connection View를 통해 데이터베이스의 전체 Thread가 어떻게 사용되고 있는지 한눈에 파악할 수 있습니다. 사용 비율을 표현한 벌집 뷰에서 각 Thread 상태에 맞는 색 변화를 통해 데이터베이스의 상태를 파악할 수 있습니다.

Long 상태의 Connection은 노란색, Lock 상태의 Connection은 빨간색으로 표시됩니다.
평소와 다른 패턴으로 커넥션의 비율이 급증하여 벌집뷰의 칸이 갑자기 늘어난다면 Thread상태를 클릭하여 상세 내역을 확인할 수 있는 ‘Thread’ 팝업창에서 Thread 목록을 확인할 수 있습니다.

5-2) Core
Alert, Sorting, Replication, Redo Log File Size 등 4가지의 인프라 관련 주요 관리 포인트를 표시합니다.

| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Alert | 현재 Alert 이 발생하고 있는 알람 발생 카운트를 표시합니다. 해당 영역을 클릭하면 Alert 발생 정보를 확인할 수 있는 Admin Reference 영역의 Alert Logs 항목이 펼쳐집니다. |
| 2 | Sorting | Sort Merge Passes 발생여부를 확인하여 IO 성능에 문제가 있는지 확인할 수 있습니다. Sort를 많이 사용하는 SQL을 ‘Top 10 Sorting List’ 팝업창을 통해 확인할 수 있습니다. Sort Merge Passes: Sort buffer 크기보다 정렬 데이터가 큰 경우 Temp 영역을 사용해 여러 조각으로 나누어서 처리한 수 Sort Range: Index Scan을 통해 수행되는 Sort 횟수 Sort Scan: Table Scan을 통해 수행되는 Sort 횟수 Sort Rows: Sort되는 Rows의 개수 |
| 3 | Replication | Replication으로 구성된 서버의 Primary, Standby 간 Log 파일과 시간 차이를 표시합니다. 차이가 많이 나는 경우 네트워크, SQL, 설정 등 지연의 원인을 파악해야 합니다. |
| 4 | Redo Log File Size | 트랜잭션이 DB에서 오래 수행되면 DB Lock 발생을 초래하여 문제가 발생할 수 있습니다. Old Transaction에 대해 Top-10 목록을 제공하여 어떤 트랜잭션이 Redo Log를 유발하고 있는지 유추해보고 불필요한 Transaction을 Kill 할 수 있습니다 Replication으로 구성된 서버의 Primary, Stand Usage: Redo Log 사용량(100%에 가까워질수록 장애가 발생할 확률이 높음) CheckPoint: prev checkpoint와 cur checkpoint의 차이 MB Per Sec: 초 당 Redo Log File 사용량. Checkpoint 영역의 Gap이 벌어질 경우 해당 지표를 통해 실제로 대량의 Redo Log를 사용했는지 확인 |
6) Admin Reference Session/Global Temp Usage, Tablespace Size, Changed parameter등 주요 관리 포인트를 표시합니다.
6-1) Temp Usage
Global Temp Tablespace, Session Temp Tablespace 영역 별로 Temp 사용량을 확인할 수 있습니다.

MySQL 8.0.13 버전부터 session영역의 Temp Tablespace 사용량에 대한 모니터링이 가능합니다.

Session Temp Tablespace: 사용자가 생성한 Temp Table 및 Optimizer가 내부적으로 생성하는 Temp Table의 내용을 저장 Global Temp Tablespace: 사용자가 생성한 Temp Table의 변경사항에 대한 Rollback Segment를 저장
MariaDB인 경우 Global Temp Tablespace 영역에 대해서만 모니터링이 가능하며, MariaDB 10.3 버전부터는 Temp Tablespace 모니터링을 지원하지 않습니다.
6-2) Additional Information open table사용량, 파라미터 변경사항, Tablespace크기 등을 확인할 수 있습니다.
Open Tables
open tables가 많이 열린 경우 과도한 메모리 낭비가 발생할 수 있으므로 설정된 open tables cache 값 대비 open table을 얼마나 쓰고있는지 확인할 수 있습니다.

Parameter
2시간 이내에 변경된 파라미터를 표시합니다.

확장 버튼 클릭 시 ‘Parameter’ 팝업창으로 나타납니다. 변경된 파라미터의 변경 전, 변경 후, 변경된 정보를 수집한 시간 값을 확인할 수 있습니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Name | 파라미터 명 |
| 2 | Before Value | 변경 전 값 |
| 3 | After Value | 변경 후 값 |
| 4 | Time | exemONE에서 수집한 시간 |
Top Tablespace Size
MySQL에서는 Database가 곧 Schema이고 Table마다 Tablespace를 갖고 있기 때문에 Schema 단위로 Tablespace 크기를 확인할 수 있습니다.

해당 영역을 클릭하면 ‘Top 10 Tablespace List’ 팝업창으로 연계됩니다. 지난 20분간 수집한 total size or diff size가 큰 object top 10을 보여줍니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Database Name | 데이터베이스 이름 |
| 2 | Table Name | 테이블 이름 |
| 3 | Data Length(MB) | 데이터 크기(MB) |
| 4 | Index Lenth(MB) | 인덱스 크기(MB) |
| 5 | Free(MB) | 할당되었지만 사용되지 않은 크기(MB) |
6-3) Alert Logs
사용자가 설정한 Alert의 발생 이력을 확인합니다.

Rule Name 클릭 시, Alert Detail Slide로 발생 정보를 확인할 수 있습니다.

7) Real Time Monitor
7-1) Slow Query
SQL의 수행시간을 Scatter 차트로 확인할 수 있습니다. (상세 내용은 4-1) Slow Query 참고)

7-2) Trend Chart
데이터베이스의 활동성 및 지연에 관한 지표들을 이용하여 Chart 형식의 모니터링 화면을 제공합니다. 기본적으로 4개의 주요 성능 지표에 대한 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능지표로 변경 및 확장이 가능합니다. (상세 내용은 4-2) Trend Chart 참고)

8) Session Tab Single View 화면 하단 Session Tab 버튼을 클릭하면 슬라이드 아웃 형태로 Backend 목록을 확인할 수 있습니다. Overveiw나 Trend Chart를 통해 데이터베이스의 비정상적인 상태를 인지했을 때, Session Tab에서 현재 SQL을 실행하고 있는 Active Thread, Lock Thread 정보를 확인하여 원인이 되는 Thread를 찾을 수 있고, 필요하다면 강제로 종료할 수 있습니다.
8-1) Thread
현재 실행중인 Tread 목록을 확인할 수 있습니다. (상세 내용은 5-1) Thread 참고)

8-2) Lock Tree
현재 Lock 상태의 Thread 목록을 확인할 수 있습니다. (상세 내용은 5-2) Lock Tree 참고)

8-3) Meta Lock Tree
현재 Meta Lock 상태의 Thread 목록을 확인할 수 있습니다. (상세 내용은 5-3) Meta Lock Tree 참고)

8-4) Session Detail
특정 Thread 또는 Lock Tree를 더블 클릭하면 Session Detail 팝업창이 나타나며 세부 정보와 실행중인 SQL 정보를 확인할 수 있습니다. 버튼을 통해 현재 실행중인 Session을 종료할 수 있습니다.
