2

使用什么方法来定位现有 MYSQL 安装上未使用的索引?Percona 有工具,但这些盒子是 Amazon RDS 实例,因此我们无权使用这些工具。

我确实找到了http://hackmysql.com/mysqlidxchk,我认为这可能是我目前唯一的选择。我可以手动梳理并查找具有重复前导键的索引,但这似乎也适得其反。

还有其他我没有看到的解决方案吗?

4

2 回答 2

4

是的,有pt-index-usage,但您不一定需要针对您的 RDS 实例运行它。

您可以收集查询日志*,然后针对在任何地方运行的数据库快照运行 pt-index-usage,即使在您的笔记本电脑上也是如此。该工具仅对日志中的所有查询运行 EXPLAIN,然后报告数据库中存在但未被任何 EXPLAIN 报告使用的任何索引。

RDS 仅支持基于表的查询日志,请注意由此带来的开销。

并且您需要先导出基于表的查询日志,然后再将其用作 pt-index-usage 的输入。这是一个可以进行导出的脚本: https ://github.com/billkarwin/bk-tools/blob/master/export-slow-log-table

MySQL 5.6 还有一个新的 performance_schema 表table_io_waits_summary_by_index_usage(参见http://dev.mysql.com/doc/refman/5.6/en/table-waits-summary-tables.html),您可以启用它来了解每个索引的频率从磁盘加载到 RAM,因此正在使用它。虽然您可能没有使用 MySQL 5.6,但我不知道您是否可以在 RDS 上启用 performance_schema 选项。


我在 Percona 的同事刚刚发布了一篇博客,确认您可以在 Amazon RDS 上启用 performance_schema,但不能通过 Web UI。 http://www.mysqlperformanceblog.com/2013/08/21/amazon-rds-with-mysql-5-6-configuration-variables/

于 2013-08-21T19:33:45.013 回答
0

在这方面,与您的查询一起解释是有帮助的试一试,如果没有帮助,请说出来,将您想知道的内容作为评论丢失,我会调查一下。

于 2013-08-21T19:32:19.703 回答