gpt4 book ai didi

mysql - 定位未使用的索引

转载 作者:行者123 更新时间:2023-11-29 01:42:03 26 4
gpt4 key购买 nike

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

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

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

最佳答案

是的,有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/

关于mysql - 定位未使用的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18365935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com