MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。本文主要介绍查看索引执行情况的表table_io_waits_summary_by_index_usage。
一、查看是否开启收集数据库服务器性能参数
SHOW VARIABLES LIKE 'performance_schema'
1
二、查看表的内容
SELECT * FROM `performance_schema`.`table_io_waits_summary_by_index_usage`
1
三、各字段的详解
COUNT_STAR, SUM_TIMER_WAIT, MIN_TIMER_WAIT, AVG_TIMER_WAIT, MAX_TIMER_WAIT
这些列汇总所有I / O操作。它们与对应的xxx_READ 和 xxx_WRITE 列的总和相同 。
COUNT_READ, SUM_TIMER_READ, MIN_TIMER_READ, AVG_TIMER_READ, MAX_TIMER_READ
这些列汇总所有读取操作。它们与相应xxx_FETCH 列的总和相同 。
COUNT_WRITE, SUM_TIMER_WRITE, MIN_TIMER_WRITE, AVG_TIMER_WRITE, MAX_TIMER_WRITE
这些列汇总所有写操作。他们是一样的相应的总和 xxx_INSERT, xxx_UPDATE和 xxx_DELETE 列。
COUNT_FETCH, SUM_TIMER_FETCH, MIN_TIMER_FETCH, AVG_TIMER_FETCH, MAX_TIMER_FETCH
这些列汇总所有提取操作。
COUNT_INSERT, SUM_TIMER_INSERT, MIN_TIMER_INSERT, AVG_TIMER_INSERT, MAX_TIMER_INSERT
这些列汇总所有插入操作。
COUNT_UPDATE, SUM_TIMER_UPDATE, MIN_TIMER_UPDATE, AVG_TIMER_UPDATE, MAX_TIMER_UPDATE
这些列汇总所有更新操作。
COUNT_DELETE, SUM_TIMER_DELETE, MIN_TIMER_DELETE, AVG_TIMER_DELETE, MAX_TIMER_DELETE
这些列汇总了所有删除操作。
值PRIMARY表示表I / O使用了主索引。
值NULL表示表I / O不使用索引。
插入计数为INDEX_NAME = NULL。
注意:以上的时间单位为皮秒(1秒=1×10^12皮秒)
四、一些常用的查询
1.查看冗余索引
SELECT
*
FROM
`performance_schema`.`table_io_waits_summary_by_index_usage`
WHERE
COUNT_STAR = 0
AND SUM_TIMER_WAIT = 0
总的使用次数和总时长都为0的情况一般有 可能 是冗余索引,冗余索引会导致增删改的速度变慢
2.查看性能较差的索引
SELECT
*
FROM
`performance_schema`.`table_io_waits_summary_by_index_usage`
ORDER BY
MAX_TIMER_WAIT DESC
3.查看某张表是否有不使用索引的情况
SELECT
*
FROM
`performance_schema`.`table_io_waits_summary_by_index_usage`
WHERE
OBJECT_NAME = 'table_name'
AND INDEX_NAME IS NULL
还有其他更多的使用方式大家可以自己挖掘
ps:这里面的数据都是累计的,所以大家可以按天进行对比的这种类似方式,还有好像是进行了DDL的操作就会清空统计,目前我还没实验过
最后附上官方文档的链接:https://dev.mysql.com/doc/refman/5.7/en/table-waits-summary-tables.html#table-io-waits-summary-by-index-usage-table
————————————————
版权声明:本文为优快云博主「不打代码的程序员」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_39504351/article/details/101381948