본문으로 건너뛰기

MySQL 지표

데이터베이스 메트릭은 데이터베이스의 작업량과 리소스 사용량을 포괄적으로 수집합니다. 와탭 모니터링 서비스는 지속적으로 메트릭을 수집하여 데이터베이스의 병목 현상을 확인하고, 성능 문제의 근본 원인을 식별하는 데 도움이 되는 데이터를 제공합니다.

지표단위설명카테고리
Aborted_connects-서버 연결 실패 횟수Connection
active_sessions-쿼리를 실행 중인 세션 수. Threads_running과 같음Connection
Connection_errors_internal-서버 오류에 의해 거절된 커넥션 수Connection
Connection_errors_max_connections-max_connections의 제한으로 거절된 커넥션의 수Connection
Connections-DB 접속 시도 횟수Connection
Max_used_connections-startup 이후 최대 사용 커넥션 수Connection
Threads_connected-현재 접속한 세션 수Connection
max_connections-최대 동시 클라이언트 연결 수, 커넥션 수가 부족할 경우 Too ManyConnection Error가 발생할 수 있습니다.Info
Bytes_received-DB 서버가 받은 데이터 bytes, Bytes_received가 높다면 이 서버는 쓰기 위주 작업(insert 등) 서버임을 알 수 있습니다.MySQL Resource
Bytes_sent-DB 서버가 보낸 데이터 bytes, Bytes_sent가 높다면 이 서버는 읽기 위주 작업(select) 서버임을 알 수 있습니다. Questions, Uptime과 함께 응용해보면 1개 쿼리당 평균 Byte, 시간당 처리 Byte 등을 계산 할 수 있습니다.MySQL Resource
Created_tmp_disk_tables-명령문을 실행하는 동안 서버에서 디스크에 생성한 임시 테이블 개수. 디스크 사용은 성능을 저하시킬 수 있으므로 이 값이 커지면 tmp_table_size 또는 max_heap_table_size 값 조정을 검토합니다.MySQL Resource
Created_tmp_files-mysqld가 생성한 임시 파일 수MySQL Resource
Created_tmp_tables-명령문을 실행하는 동안 서버에 의해 생성된 내부 임시 테이블의 수. 일반적으로 쿼리에서 UNION ALL을 사용하거나 ORDER BY, GROUP BY, DISTINCT를 사용하는 몇가지 경우 임시테이블이 사용될 수 있습니다. 총 내부 임시테이블 수(Created_tmp_disk_tables + Created_tmp_tables) 대비 디스크상의 임시테이블 수(Created_tmp_disk_tables)가 높지 않은 것이 좋습니다.(10%미만)MySQL Resource
Innodb_buffer_pool_bytes_dirty-버퍼풀의 데이터 중 변경된 바이트 수(더티 데이터 수)MySQL Resource
Innodb_buffer_pool_pages_data-전체 버퍼풀에서 현재 사용 중인 버퍼풀 페이지 수MySQL Resource
Innodb_buffer_pool_pages_dirty-버퍼풀의 데이터 중 변경된 페이지 수(더티 페이지 수)MySQL Resource
Innodb_buffer_pool_pages_flushed-플러시된 InnoDB 버퍼풀 페이지 수. 이는 버퍼풀의 더티 데이터를 디스크에 쓰는 과정으로 과도한 flush는 디스크에 부담을 줄 수 있으므로 디스크의 성능과 함께 모니터링해야 합니다.MySQL Resource
Innodb_buffer_pool_pages_free-전체 버퍼풀에서 사용하지 않은(사용 가능한) 페이지 수MySQL Resource
Innodb_buffer_pool_pages_total-전체 버퍼풀의 페이지 수MySQL Resource
Innodb_buffer_pool_read_requests-논리적 읽기 요청 수(물리적 읽기를 포함). Inodb buffer pool hit ratio 계산을 다음과 같이 할 수 있으며, 90% 이상을 권장합니다. 만약 Hit Ratio가 낮다면 Innodb_buffer_pool_size 증설을 검토합니다.
Buffer Hit Ratio = (1 - (Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)) * 100
MySQL Resource
Innodb_buffer_pool_reads-물리적(Disk) read 를 한 횟수. Innodb 버퍼풀에 없어서 디스크에서 직접 읽어야 하는 논리적 읽기 요청 수.MySQL Resource
Innodb_data_reads-InnoDB 읽기 작업의 수 (InnoDB_Data_Read와 혼동되지 않음).MySQL Resource
Innodb_data_writes-InnoDB 쓰기 작업의 수.MySQL Resource
Innodb_dblwr_writes-Innodb Doublewrite 버퍼에 대한 쓰기 수.MySQL Resource
Innodb_log_waits-로그 버퍼가 작아서 플러시 될 때까지 기다린 횟수. Redo log 경합 비율은 (Innodb_log_waits / Innodb_log_writes) 로 계산할 수 있으며 1 미만 값을 권장합니다. Wait가 높다면 innodb_log_buffer_size를 늘리는 것을 검토하세요.MySQL Resource
Innodb_log_writes-innodb redo log file에 대한 물리적 쓰기 수MySQL Resource
Binlog_bytes_written-이진 로그에 기록 된 바이트 수.Performance
Binlog_commits-이진 로그에 기록된 Commit 수.Performance
Innodb_row_lock_time-row lock 획득에 소비된 총 시간(milliseconds)Performance
Innodb_row_lock_waits-Innodb 스토리지 엔진 테이블에서 row lock을 기다려야 하는 횟수. Lock을 획득한 수가 아닌 lock을 얻기 위해 대기하는 횟수로, 이 지표가 평소보다 급증한다면 쿼리 대기가 발생(락 경합)하는 것으로 쿼리 튜닝이 필요합니다.Performance
lock_wait_sessions-현재 row lock을 획득하기 위해 대기중인 수. innodb_lock_waits(data_lock_waits)의 건수입니다.Performance
replication_delay-Replication 구조일 경우 replication db에 반영되는 지연시간. Slave DB에서 측정되는 지표입니다.Performance
Slaves_running-실행되는 슬레이브 SQL 스레드 수.Performance
Slow_queries-DB 파라미터 long_query_time(초)에 설정한 시간 이상으로 실행된 쿼리 수Performance
Sort_rows-sort 처리한 row 수Performance
Com_commit-commit 횟수Throughput
Com_delete-실행된 삭제 명령 수 handler_delete와는 다른 행이 테이블에서 삭제된 횟수를 계산합니다.Throughput
Com_insert-실행된 삽입 명령 수Throughput
Com_rollback-rollback 횟수Throughput
Com_select-Select 명령을 실행한 횟수Throughput
Com_update-실행된 업데이트 명령 수Throughput
Innodb_rows_read-select에서 처리된 row 수Throughput
Innodb_rows_writes-write에 처리된 row 수. Innodb_rows_inserted + Innodb_rows_updated + Innodb_rows_deleted와 같음Throughput
Queries-com_pingcom_statistics를 제외한 서버에서 실행한 명령문 수. Stored program 내에서 실행된 진술도 계산한다는 점에서 Questions과 다릅니다.Throughput
Questions-실행된 query의 갯수Throughput
Select_full_join-하나 이상의 테이블을 조인할 경우 인덱스를 사용하지 않고 드리븐(driven) 테이블을 풀 스캔(full scan)한 횟수Throughput
Select_scan-드라이빙(driving) 테이블을 풀 스캔(full scan)한 횟수. 이 경우 실행 계획의 type 컬럼에 ALL이 표시됩니다.Throughput
Writes-write에 사용한 명령 횟수. Com_insert + Com_update + Com_delete와 같음Throughput
cpu(xos2)pctcpu 사용율, cpu_user + cpu_sys + cpu_iowait의 합XOS
cpu_user(xos2)pctcpu가 사용자 코드를 실행하는데 소요한 시간XOS
cpu_sys(xos2)pctcpu가 kernel code를 수행한 시간XOS
cpu_iowait(xos2)pctcpu가 IO를 대기한 시간XOS
cpu_idle(xos2)pctcpu 프로세서 유휴 시간XOS
mem(xos)pct메모리 사용율XOS
mem_total(xos)MB전체 메모리양XOS
mem_free(xos)MB시스템에서 사용하고 있지 않은 메모리양XOS
mem_used(xos)MB시스템에서 사용하고 있는 메모리양XOS
mem_buffcache(xos)MBbuff/cache로 사용중인 메모리양XOS
mem_swaptotal(xos)MBSwap 전체 사이즈, 물리메모리가 부족한 경우를 대비하여 설정합니다.XOS
mem_swapfree(xos)MBSwap의 사용하지 않은 영역, Swap 영역은 디스크 공간에 확보되기 때문에 Swap을 사용하고 있다면 시스템 성능이 급격하게 떨어질 수 있습니다.XOS
mem_available(xos)MB메모리 가용영역XOS
disk_reads(xos)block디스크로부터 읽은 데이터의 양XOS
disk_read_bytes(xos)byte디스크로부터 읽은 데이터의 양XOS
disk_writes(xos)block디스크로 쓰여진 데이터의 양XOS
disk_write_bytes(xos)byte디스크로 쓰여진 데이터의 양XOS
net_recv_bytes(xos)byte네트워크로 수신된 데이터의 양XOS
net_recv_packets(xos)-네트워크로 수신된 데이터 패킷의 수XOS
net_send_bytes(xos)byte네트워크로 전송한 데이터의 양XOS
net_send_packets(xos)-네트워크로 전송한 데이터 패킷의 수XOS