Mysql性能监控

show processlist;

show global variables like 'max_allowed_packet';


// QPS计算(每秒查询数)
show global status like 'com_update';
show global status like 'com_select';
show global status like 'com_delete';
show global status like 'uptime';
//QPS=(com_update+com_insert+com_delete+com_select)/uptime



// TPS计算(每秒事务数)
show global status like 'com_commit';
show global status like 'com_rollback';
show global status like 'uptime';
// TPS=(com_commit+com_rollback)/uptime



//线程连接数和命中率
show global status like 'threads_%';
show global status like 'Connections';
show variables like '%thread_cache_size%';
//线程缓存命中率=1-Threads_created/Connections
//根据Threads_connected可预估thread_cache_size值应该设置多大,一般来说250是一个不错的上限值,如果内存足够大,也可以设置成thread_cache_size值和threaads_connected值相同;
或者通过观察threads_created值,如果该值很大或一直在增长,可以适当增加thread_cache_size的值;
在休眠状态下每个线程大概占用256KB左右的内存,所以当内存足够时,设置太小也不会节约太多内存,除非该值已经超过几千。



//表缓存
SHOW GLOBAL STATUS LIKE 'Open_tables';
SHOW GLOBAL STATUS LIKE 'Opened_tables';
SHOW GLOBAL STATUS LIKE 'table_cache';
//table_cache应该大于 Open_tables 小于 Opened_tables



//最大连接数
show global status like 'Max_used_connections';
show variables like 'max_connections%';
//通常max_connections的大小应该设置为比Max_used_connections状态值大,Max_used_connections状态值反映服务器连接在某个时间段是否有尖峰,如果该值大于max_connections值,代表客户端至少被拒绝了一次,可以简单地设置为符合以下条件:Max_used_connections/max_connections=0.8



//InnoDB Buffer命中率
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_reads';
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read_requests';
//InnoDB Buffer命中率 IFRH=(1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100  目标为目标 95%-99%;



//Slow queries per minute 慢查询
SHOW GLOBAL STATUS LIKE 'Slow_queries';
SHOW GLOBAL STATUS LIKE 'Uptime';
//SQPM=Slow_queries / (Uptime/60)

//Slow queries /Questions Ratio
SHOW GLOBAL STATUS LIKE 'Slow_queries';
SHOW GLOBAL STATUS LIKE 'Questions';
//S/Q=Slow_queries/Questions



//Full_join per minute
SHOW GLOBAL STATUS LIKE 'Select_full_join';
show global status like 'select_range';
show global status like 'Select_range_check';//如果该值不为0需要检查表的索引是否合理
//该值表示第一个表使用ranges的join数量,该值很大说明join写得没有问题,通常可查看select_full_join和select_range的比值来判断系统中join语句的性能情况



//行锁
SHOW GLOBAL STATUS LIKE 'Innodb_row_lock_%';
show global  status like '%lock%';
//Innodb_row_lock_waits innodb行锁,太大可能是间隙锁造成的
      Innodb_row_lock_current_waits:当前正在等待锁定的数量;

      Innodb_row_lock_time :从系统启动到现在锁定的总时间长度,单位ms;

      Innodb_row_lock_time_avg :每次等待所花平均时间;

      Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花的时间;

      Innodb_row_lock_waits :从系统启动到现在总共等待的次数。


//Query Cache命中率
show status like 'Qcache%';
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;


//Thread Cache 命中率
show global status like 'Thread%';
show global status like 'Connections';
//Thread_cache_hits = (1 - Threads_created / connections ) * 100%


//查看延时时间 (主从结构,从服务器状态)
show slave status

//Tmp Table 状况(临时表状况)
show status like 'Created_tmp%';
//Created_tmp_disk_tables/Created_tmp_tables比值最好不要超过10%,如果Created_tmp_tables值比较大, 可能是排序句子过多或者是连接句子不够优化


//Binlog Cache 使用状况
show status like 'Binlog_cache%';
//如果Binlog_cache_disk_use值不为0 ,可能需要调大 binlog_cache_size大小


原文地址:https://www.cnblogs.com/AmilyWilly/p/4791797.html