MySQL怎么排查使用率低的索引?

1 个回答

  • 菜菜
    世界上有两个我,一个想去远方,一个身不由己。
    MySQL 5.5以后,有一个performance_schema的配置,默认为不开启,开启后,可以统计MySQL数据库的性能进行监测统计,会将内存使用情况,SQL语句使用情况,IO读取情况等等进行统计,并将统计结果写入到performance_schema这个数据库中,这个数据库里面有很多表,记录了性能统计结果。在MySQL bentch中有一个界面会展示出没有使用到索引的结果。 例如图中就是我们test数据库中有一个activity表有一个index索引没有使用到。 ![image.png](https://images.codewd.com/ccedfb0140b7b7a366e12cf792ea8b73.png) 这个界面的数据来源也是来自于performance_schema这个数据库,里面总共有52个性能统计结果表,其中有一个table_io_waits_summary_by_index_usage表,里面统计了索引使用情况,里面有统计索引在查询,插入,更新,删除语句中使用到的次数。 ```java SELECT object_type,//类型,这里是table object_schema,//索引所在的数据库名 object_name,//索引所在的表名 index_name,//索引名称 COUNT_FETCH,//这个索引在查询语句中使用到的的次数 COUNT_INSERT,//这个索引在插入语句中使用到的的次数 COUNT_UPDATE,//这个索引在更新语句中使用到的的次数 COUNT_DELETE//这个索引在删除语句中使用到的的次数 FROM PERFORMANCE_SCHEMA.table_io_waits_summary_by_index_usage; ``` 这个是查询结果,可以看到idx_ipport这个索引在查询语句中用到了1次。 ![image.png](https://images.codewd.com/599befafd46b14d0cb60752cb9a53a4f.png) table_io_waits_summary_by_index_usage这个表里面还有更详细的统计数据,具体可以看看下面这个链接,里面有介绍 参考链接 [https://www.cnblogs.com/cchust/p/5057498.html](https://www.cnblogs.com/cchust/p/5057498.html) [https://www.cnblogs.com/cchust/p/5061131.html](https://www.cnblogs.com/cchust/p/5061131.html)
    发布于 2022-02-12 18:11 •IP属地 黑龙江
    举报
    评论
    收藏