MySQL
다수의 MySQL 서버를 모니터링 할 수 있는 화면입니다. 하나의 데이터베이스가 선택되면 Overview, Session, Core 6 등 선택된 데이터베이스의 데이터만으로 변경되어 단일 데이터베이스에 대한 집중적인 모니터링이 가능합니다. 상단 브레드크럼을 이용하여 폴더 변경이 가능합니다.

1) Overview
폴더에 속한 인스턴스의 CPU, Memory, 주요 성능 지표를 함께 확인할 수 있습니다. 목록에서 인스턴스 클릭 시 선택한 인스턴스가 하이라이트 되며 선택한 인스턴스의 데이터를 하이라이트로 볼 수 있습니다. Alert이 발생한 경우 해당 인스턴스에 Alert Level에 따라 색 표시가 되어 어떤 인스턴스에 문제가 있는 지 파악할 수 있습니다.

1-1) DB Session Type
Active Session, Long Session, Lock Session을 색상으로 구분하여 실시간으로 각 Session 상태 별 분포를 통해 데이터베이스에서 진행중인 작업의 형태와 waiting 여부를 판단할 수 있습니다.

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

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

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | DB | 데이터베이스 |
| 3 | Execute Count | 총 실행 횟수 |
| 4 | Sort Merge Passes | Sort buffer 크기보다 정렬 데이터가 큰 경우 Disk의 Temp 영역을 사용해 여러 조각으로 나누어서 처리한 수 |
| 5 | Avg Sort Merge | 평균 sort merge passes |
| 6 | Avg Rows Sorted | 명령문에 의해 정렬된 평균 행 수 |
| 7 | Last Seen | Sort merge passes가 최근에 발생한 시간 |
| 8 | Query | SQL Text |
2-2) Global Temp Usage (Size)
Global Temp 사용률을 보여줍니다. 인스턴스 클릭 시 global temp 사용량이 높은 파일을 확인할 수 있는 ‘Global Temp List’ 팝업창으로 연계 됩니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | FILE NAME | Temp Table 파일 이름 |
| 2 | Tablespace Name | Temp Table Tablespace 이름 |
| 3 | Initial Size (bytes) | 최초 설정된 파일 크기 (bytes) |
| 4 | Total Size (bytes) | 총 크기 (bytes) (TOTAL_EXTENTS * EXTENT_SIZE/1024/1024) |
| 5 | Data Free | Tablespace의 총 여유 공간 (NDB는 항상 NULL) |
| 6 | Maximum Size (bytes) | 최대로 증가할 수 있는 사이즈 (NULL로 보이는 경우는 설정 안됨, Auto) |
2-3) Session Temp Usage (Size)
Session Temp 사용률을 보여줍니다. 인스턴스 클릭 시 session temp 사용량이 높은 파일을 확인할 수 있는 ‘Top 10 Session Temp List’ 팝업창으로 연계 됩니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | User | 사용자 |
| 3 | Host | 사용자 Host |
| 4 | DB | 데이터베이스 이름 |
| 5 | Process ID | Process ID |
| 6 | Tablespace ID | Tablespace ID |
| 7 | Path | Tablespace 데이터 파일 경로 |
| 8 | Size (Bytes) | Tablespace 크기 (Bytes) |
| 9 | State | 현재 tablespace 사용 여부 (Active: 세션에서 사용 중, Inactive: 사용 중이지 않음) |
| 10 | Purpose | Tablespace 목적 |
| 11 | SQL Text | SQL Text |
| 12 | Command | SQL 수행 상태 |
| 13 | Time (sec) | 시간 (초) |
| 14 | Thread State | Thread 상태 |
2-4) Queries[Delta](Count)
DB가 기동 된 이후부터 수행 된 전체 SQL 수의 변화량을 보여줍니다. 인스턴스 클릭 시 최근 Top Summary 정보를 확인할 수 있는 ‘Top SQL’ 팝업창으로 연계 됩니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Digest | Digest |
| 3 | Query | SQL Text |
| 4 | Exec Count | 총 실행 횟수 |
| 5 | Total Latency (sec) | 총 수행 시간 (초) |
| 6 | Avg Latency (sec) | 평균 수행 시간 (초) |
| 7 | Max Latency (sec) | 최대 수행 시간 (초) |
| 8 | DB | 데이터베이스 이름 |
| 9 | Tmp Disk Tables | 명령문을 실행하는 동안 서버에서 생성한 디스크 임시 테이블 수 |
| 10 | Sort Merge Passes | Sort buffer 크기보다 정렬 데이터가 큰 경우 디스크의 Temp 영역을 사용해 여러 조각으로 나누어서 처리한 수 |
2-5) Redo Usage (%)
Redo 사용률을 보여줍니다. 인스턴스 클릭 시 어떤 트랜잭션이 Redo Log를 유발하고 있는지에 대한 정보를 자세히 확인할 수 있는 ‘Top 10 Old Transaction’ 창으로 연계 됩니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Rank | 순위 |
| 2 | Thread ID | Thread ID |
| 3 | Process ID | Process ID |
| 4 | Event ID | Event ID |
| 5 | User | 사용자 |
| 6 | DB | 데이터베이스 이름 |
| 7 | Current Statement | 최근 실행 명령어 |
| 8 | Trx Time (sec) | 트랜잭션 수행 시간 (초) |
| 9 | Trx Start Time | 트랜잭션 시작 시간 (초) |
| 10 | End Event ID | Event가 끝날 때 스레드 현재 Event ID로 업데이트 (이벤트가 시작될 때는 NULL로 설정) |
| 11 | Event Name | Event 이름 |
| 12 | State | 트랜잭션 상태 |
| 13 | Access Mode | 트랜잭션 액세스 모드 (값은 READ WRITE 또는 READ ONLY) |
| 14 | Isolation Level | 트랜잭션 격리 수준 (값은 REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED 또는 SERIALIZABLE.) |
| 15 | Auto Commit | 트랜잭션이 시작될 때 자동 커밋 모드가 활성화되었는지 여부 |
3) Alert
인스턴스에서 발생한 Alert을 Level, Type 별로 보여줍니다.

4) Real Time Monitor
데이터베이스의 활동성 및 지연에 관한 지표들을 이용하여 Chart 형식의 모니터링을 할 수 있습니다. 기본적으로 4개의 주요 성능 지표에 대한 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능 지표로 변경 및 확장이 가능합니다.

4-1) Slow Query
SQL의 수행시간을 Scatter 차트로 확인할 수 있습니다. 등록된 인스턴스들의 Slow Query를 확인하거나 특정 인스턴스를 선택해서 확인할 수 있습니다.
를 선택하면 ‘Slow Query Option’ 팝업창이 뜨고 Max Value 값과 점의 크기를 변경할 수 있습니다.

| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Set Max Value | Slow Query 차트에 표시할 Query최대 수행 시간입니다. Set Max Value 옵션 설정 시 설정된 값으로 차트를 그립니다. Slow Query 타이틀 영역에서는 Max 값이 넘는 Query 수와 Slow Query 중 가장 수행시간이 긴 Query의 시간을 확인할 수 있습니다. Set Max Value 옵션을 설정하지 않은 경우 Slow Query 중 수행시간이 긴 Query 의 시간을 Max값으로 차트를 그립니다. |
| 2 | Set Dot Size | Slow Query 차트를 그릴 점의 크기를 1~5 크기로 설정할 수 있습니다. |
Slow Query 점을 드래그 하면 ‘SQL Elapsed List’ 팝업창이 나타나며 드래그 영역에 수집된 SQL 목록을 확인할 수 있습니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Alias | 인스턴스 이름 |
| 2 | Thread ID | Thread ID |
| 3 | User Host | 사용자 Host |
| 4 | Start Time | Thread 시작 시간 |
| 5 | Query Time (sec) | 실행 시간 (sec) |
| 7 | Lock Time (sec) | Lock을 획득하기 위해 대기하는데 소요된 시간 (sec) |
| 8 | SQL Text | SQL Text |
SQL List를 더블 클릭하면 ‘Session Detail’ 팝업창으로 연계되며 SQL, Plan 및 세부적인 정보를 확인할 수 있습니다.
4-2) Trend Chart
데이터베이스의 활동성 및 지연에 관한 지표들을 이용하여 Chart 형식의 모니터링 화면을 제공합니다. 기본적으로 4개의 주요 성능 지표에 대한 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능지표로 변경 및 확장이 가능합니다.

를 클릭하여 지표를 변경할 수 있습니다. ‘Stat Change’ 팝업창에서 지표 변경 및 차트 옵션을 선택하여 지표를 변경합니다.

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

멀티 데이터베이스 모니터링을 지원하며 우측 상단에서 원하는 인스턴스만 모니터링이 가능하도록 선택할 수 있습니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Thread ID | Thread ID |
| 2 | Process ID | 서버 Process ID |
| 3 | User | 사용자 이름 |
| 4 | Host | 사용자 Host |
| 5 | DB | 데이터베이스 이름 |
| 6 | Digest | Digest |
| 7 | SQL Text | SQL Text |
| 8 | Elapsed Time(sec) | 수행 시간 (초) |
| 9 | Query Start Time | 쿼리 시작 시간 |
| 10 | Command | SQL 수행 상태 |
| 11 | State | 현재 tablespace 사용 여부 (Active: 세션에서 사용 중, Inactive: 사용 중이지 않음) |
| 12 | PID | 사용자 Process ID |
| 13 | Program Name | 사용자 프로그램 이름 |
| 14 | Statement Latency(sec) | 명령문이 실행된 기간 (초) |
| 15 | Progess | 각 행에 대한 단계 진행률 (100 * WORK_COMPLETED) / WORK_ESTIMATED |
| 16 | Lock Latency(sec) | lock을 대기하는데 소요된 시간 (초) |
| 17 | Rows Examined | 스토리지 엔진에서 읽은 행 수 |
| 18 | Rows Sent | 명령문에서 반환된 행 수 |
| 19 | Rows Affected | 명령문의 영향을 받는 행 수 |
| 20 | Tmp Tables | 명령문을 실행하는 동안 서버에서 생성한 임시 테이블 수 |
| 21 | Tmp Disk Tables | 명령문을 실행하는 동안 디스크에서 생성한 임시 테이블 수 |
| 22 | Full Scan | 명령문에서 수행한 전체 테이블 스캔 수 |
| 23 | Last Statement Latency(sec) | 마지막 명령문이 실행된 시간 (초) |
| 24 | Current Memory | Thread가 할당한 바이트 수 |
| 25 | Last Wait | Thread에 대한 가장 최근의 대기 이벤트 이름 |
| 26 | Last Wait Latency(sec) | Thread에 대한 가장 최근 대기 이벤트의 대기 시간 (초) |
| 27 | Source | 이벤트를 생성한 계측 코드가 포함된 소스 파일 및 줄 번호 |
| 28 | Trx Latency(sec) | Thread에 대한 현재 트랜잭션의 수행 시간 |
| 29 | Trx State | Thread에 대한 현재 트랜잭션의 상태 |
| 30 | Trx Autocommit | 현재 트랜잭션이 시작될 때 자동 커밋 모드가 활성화되었는지 여부 |
5-2) Lock Tree
현재 Lock 상태의 Threads 목록을 확인할 수 있습니다. 멀티 데이터베이스 모니터링을 지원하며 우측 상단에서 원하는 인스턴스만 모니터링이 가능하도록 선택할 수 있습니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Start Time | 세션 시작 시간 |
| 2 | Collect Time | 수집 시간 |
| 3 | Lock Wait Time(sec) | Wait session의 대기 소요 시간 |
| 4 | Lock Status | Lock session 상태 |
| 5 | Blocking Engine Transaction ID | Lock 트랜잭션 ID |
| 6 | Engine Transaction ID | 트랜잭션 ID |
| 7 | Thread ID | Thread ID |
| 8 | Processlist ID | 서버 프로세스 ID |
| 9 | SQL Text | 수행된 쿼리 SQL Text |
| 10 | Name | MySQL Lock Name |
| 11 | Type | MySQL Lock 타입 |
| 12 | Processlist User | 스레드와 연관된 사용자명 |
| 13 | Processlist Host | 스레드와 연관된 호스트 정보 |
| 14 | Processlist DB | 스레드의 데이터베이스 사용자명 |
| 15 | Processlist Command | 스레드가 실행한 명령 유형 |
| 16 | Processlist Time (sec) | 스레드가 현재 상태로 변경된 시간 |
| 17 | Processlist State | 스레드 동작, 이벤트 상태 |
| 18 | Parent Thread ID | 해당 스레드가 하위 스레드인 경우, 상위 스레드 ID |
| 19 | Connection Type | 연결 설정에 사용된 프로토콜 |
| 20 | Thread OS ID | OS에 정의된 스레드 식별 ID |
| 21 | Trx Wait Started | 트랜잭션 대기 시작 시간 |
| 22 | Trx State | 트랜잭션 상태 |
| 23 | Trx Started | 트랜잭션 시작 시간 |
| 24 | Trx Operation State | 트랜잭션 현재 상태 |
| 25 | Trx Rows Locked | 트랜잭션에 의해 잠긴 행 수 |
| 26 | Trx Rows Modified | 트랜잭션에서 수정/삽입된 행 수 |
| 27 | Lock Mode v57 | MySQL v5.7 이하 Lock Mode |
| 28 | Lock Type v57 | MySQL v5.7 이하 Lock Type |
| 29 | Lock Table v57 | MySQL v5.7 이하 Lock Table |
5-3) Meta Lock Tree
현재 Meta Lock 상태의 Threads 목록을 확인할 수 있습니다. 멀티 데이터베이스 모니터링을 지원하며 우측 상단에서 원하는 인스턴스만 모니터링이 가능하도록 선택할 수 있습니다.

● Grid
| 순번 | 항목 | 내용 |
|---|---|---|
| 1 | Start Time | 세션 시작 시간 |
| 2 | Collect Time | 수집 시간 |
| 3 | Lock Wait Time(sec) | Wait session의 대기 소요 시간 |
| 4 | Lock Status | Lock session 상태 |
| 5 | Blocking Engine Transaction ID | Lock 트랜잭션 ID |
| 6 | Engine Transaction ID | 트랜잭션 ID |
| 7 | Thread ID | Thread ID |
| 8 | Processlist ID | 서버 프로세스 ID |
| 9 | SQL Text | 수행된 쿼리 SQL Text |
| 10 | Name | MySQL Lock Name |
| 11 | Type | MySQL Lock 타입 |
| 12 | Processlist User | 스레드와 연관된 사용자명 |
| 13 | Processlist Host | 스레드와 연관된 호스트 정보 |
| 14 | Processlist DB | 스레드의 데이터베이스 사용자명 |
| 15 | Processlist Command | 스레드가 실행한 명령 유형 |
| 16 | Processlist Time (sec) | 스레드가 현재 상태로 변경된 시간 |
| 17 | Processlist State | 스레드 동작, 이벤트 상태 |
| 18 | Parent Thread ID | 해당 스레드가 하위 스레드인 경우, 상위 스레드 ID |
| 19 | Connection Type | 연결 설정에 사용된 프로토콜 |
| 20 | Thread OS ID | OS에 정의된 스레드 식별 ID |
| 21 | Trx Wait Started | 트랜잭션 대기 시작 시간 |
| 22 | Trx State | 트랜잭션 상태 |
| 23 | Trx Started | 트랜잭션 시작 시간 |
| 24 | Trx Operation State | 트랜잭션 현재 상태 |
| 25 | Trx Rows Locked | 트랜잭션에 의해 잠긴 행 수 |
| 26 | Trx Rows Modified | 트랜잭션에서 수정/삽입된 행 수 |
| 27 | Lock Mode v57 | MySQL v5.7 이하 Lock Mode |
| 28 | Lock Type v57 | MySQL v5.7 이하 Lock Type |
| 29 | Lock Table v57 | MySQL v5.7 이하 Lock Table |
5-4) Session Detail
특정 Active Backends 또는 Lock Tree를 더블 클릭하면 Session Detail 팝업창이 나타나며 세부 정보와 실행중인 SQL 정보를 확인할 수 있습니다. 버튼을 통해 현재 실행중인 Session을 종료할 수 있습니다.
