文章

MySQL常用指标查询

QPS(每秒Query量)

show  global status like 'Question%';

TPS(每秒事务量)

TPS = (Com_commit + Com_rollback) / seconds

show global status like'Com_commit';
show global status like'Com_rollback';

key Buffer 命中率

key_buffer_read_hits = (1-key_reads /key_read_requests) * 100% key_buffer_write_hits = (1-key_writes /key_write_requests) * 100%

show global status like 'key%';

InnoDB Buffer命中率

innodb_buffer_read_hits = (1 -innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

show status like'innodb_buffer_pool_read%';

Query Cache命中率

Query_cache_hits = (Qcahce_hits /(Qcache_hits + Qcache_inserts )) * 100%;

show status like 'Qcache%';

Table Cache状态量

show global  status like 'open%';

Thread Cache 命中率

Thread_cache_hits = (1 - Threads_created /connections ) * 100%

show global status like'Thread%';
show global status like'Connections';

锁状态

Table_locks_waited/Table_locks_immediate=0.0% 如果这个比值比较大的话,说明表锁造成的阻塞比较严重,Innodb_row_lock_waits 和Innodb_row_lock_time_avg太大,说明锁争用比较严重,有可能是间隙锁造成的,可以查询information_schema数据库中相关表查看锁情况,或者通过设置InnoDB Monitors来进一步观察锁冲突的表、数据行等,分析原因。

show global  status like '%lock%';

复制延时

当前SQL线程运行的延时=Read_Master_Log_Pos-Exec_Master_Log_Pos Master_Log_File: mysql-bin.003590 //当前IO线程正在读取的主服务器二进制文件的名称 Read_Master_Log_Pos: 331275450 //当前IO线程正在读取的二进制日志的位置 Relay_Log_File: relaylog.009253 //SQL线程当前正在读取和执行的中继日志文件的名称 Relay_Log_Pos: 331275665 //当前中继日志里,SQL线程已读取和执行的位置 Relay_Master_Log_File: mysql-bin.003590 //由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称 Slave_IO_Running: Yes //IO线程是否被启动并成功的连接到主服务器上 Slave_SQL_Running: Yes //SQL线程是否被启动 Last_Errno: 0 //是记录系统的最后一次错误代码 Exec_Master_Log_Pos: 331275450 //是SQL线程执行中继日志中相对于主库bin log的位点。Read_Master_Log_Pos减去Exec_Master_Log_Pos可以表示当前SQL线程运行的延时 Relay_Log_Space: 331275954 //所有原有的中继日志结合起来的总大小

show slave status;

Tmp Table 状况(临时表状况)

Created_tmp_disk_tables/Created_tmp_tables比值最好不要超过10%,如果Created_tmp_tables值比较大,可能是排序句子过多等原因。

show status like 'Created_tmp%';

Binlog Cache 使用状况

如果Binlog_cache_disk_use值不为0 ,可能需要调大 binlog_cache_size大小

show status like'Binlog_cache%';

Innodb_log_waits 量

Innodb_log_waits是等待日志缓冲刷出的次数,如果值不等于0的话,并且持续增长,表明 innodb log buffer 因为空间不足而等待,可以考虑增大innodb_log_buffer_size

show status like'innodb_log_waits';

open file and table

show global status like 'Open_files';
show global status like 'Open_tables';
License:  CC BY 4.0