与性能有关的mysql运行状态详解

392 阅读3分钟

1.查看crud操作的总次数:com_insert,com_select,com_update,com_delete。注意是次数,不是影响行数

SHOW GLOBAL STATUS LIKE 'com_select';
"Com_insert"	"33848"
"Com_select"	"901752"
"Com_update"	"1843"
"Com_delete"	"18107"

2.查看innodb记录的crud操作影响的行数

SHOW GLOBAL STATUS LIKE 'innodb_rows%';
"Innodb_rows_deleted"	"16382"
"Innodb_rows_inserted"	"78072698"
"Innodb_rows_read"	"124222311831"
"Innodb_rows_updated"	"1610"

3.事务提交与回滚的次数:com_commit,com_rollback。慢查询次数:Slow_queries

"Com_commit"	"18217"
"Com_rollback"	"5"
"Slow_queries"	"82664"

4.查看索引的使用情况

SHOW GLOBAL STATUS LIKE 'handler_read%';

Handler_read_first:读取索引中第一个条的次数。如果该值很高,则表明服务器正在执行大量的全索引扫描(例如 SELECT col1 FROM foo,且col1被索引了)。
Handler_read_key:根据索引读取一行的次数。如果较高,说明为查询建立了的正确的索引。
Handler_read_last:读取索引中最后一个条的次数。使用ORDER BY,服务器先获取索引的第一条,然后是后面的几条,而使用ORDER BY DESC,服务器将先获取索引的最后一条,然后是前面的几条。
Handler_read_next:通过索引读取下一行的次数。如果查询具有范围约束的索引列或执行索引扫描,则此值将递增。 Handler_read_prev:通过索引读取下一行的次数。该读方法主要用于优化ORDER BY ... DESC。
Handler_read_rnd:根据固定位置读一行的次数。如果执行大量查询并需要对结果进行排序该值较高。可能有很多查询需要MySQL扫描全表,或者有一些表连接没有正确使用索引。
Handler_read_rnd_next:在数据文件中读下一行的次数。如果执行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。

"Handler_read_first"	"407877"
"Handler_read_key"	"16779164314"
"Handler_read_last"	"18093"
"Handler_read_next"	"98280870973"
"Handler_read_prev"	"149473555"
"Handler_read_rnd"	"283037"
"Handler_read_rnd_next"	"25431604528"

5.查看表连接的相关统计

SHOW GLOBAL STATUS LIKE 'Select_%';

Select_full_join:执行全表扫描的联接数,因为它们不使用索引。如果这个值不是0,那么应该仔细检查表的索引。 Select_full_range_join:在引用表上使用范围搜索的联接数。
Select_range:使用第一个表上的范围的连接数。这通常不是一个关键问题,即使值非常大。
Select_range_check:在表连接时,每行记录都要检查一次是否能使用范围索引。如果这不是0,则应该仔细检查表的索引。 Select_scan:对第一个表进行完整扫描的连接数。

"Select_full_join"        "45"
"Select_full_range_join"  "1"
"Select_range"	          "30414"
"Select_range_check"	  "0"
"Select_scan"	          "510450"

6.查看排序的相关统计(不止有order by操作,还有除了使用order by null 的group by)

SHOW GLOBAL STATUS LIKE 'Sort_%';

Sort_merge_passes:排序算法必须完成的合并遍历数。如果这个值很大,那么应该考虑增加sort_buffer_size系统变量的值。
Sort_range:使用范围完成的排序数。
Sort_rows:排序的总行数。
Sort_scan:扫描表所完成的排序数。应该尽量小一些,优化时添加索引,使其排序使用有序索引顺序扫描来返回结果数据

"Sort_merge_passes"  "51"
"Sort_range"	     "15671"
"Sort_rows"          "2971735"
"Sort_scan"          "10331"

参考资料

mysql文档