查找最近最少使用的mysql表索引

A N*_*ter 4 mysql innodb index database-tuning

我正在清理 mysql 数据库中 (innodb) 表中的重复索引。该数据库有大约 50 个表。

虽然我可以使用 pt-duplicate-key-checker 检查重复键,但我想知道是否有一种工具可以帮助我从所有表中找出最近最少使用的索引。

例如。, 如果表 "A" 定义了三个索引 "index_1"、"index_2" 和 "index_3",并且其中 "index_3" 的使用频率最低,假设它每 1/10000 次对表进行的查询使用一次,则输出脚本或工具的名称应为“index_3”。

有没有好的方法或工具可以帮助我在数据库上运行此分析?

提前致谢。

Mar*_*lff 9

与MySQL 5.6开始,performance_schema仪器表I / O,并计算汇总统计通过table,并通过index

见表performance_schema.table_io_waits_summary_by_index_usage

http://dev.mysql.com/doc/refman/5.6/en/table-waits-summary-tables.html#table-io-waits-summary-by-index-usage-table

查找最近最少使用的索引涉及时间和时间戳。

性能模式测量针对索引计算 I/O。它可以用来寻找最经常使用的指标,这实际上应该是八九不离十。

完整示例在这里:

http://sqlfiddle.com/#!9/c129c/4

  • @aehike,表I/O 是在sql 层/存储引擎接口测量的。文件 I/O 如下,在存储引擎/文件系统接口。即使整个DB都在RAM中,并且文件系统永远不会命中,MySQL服务器仍然会为行调用存储引擎(innodb等),表I/O也会在这里统计。 (2认同)