【问题标题】:Get a MySQL index last use time?获取 MySQL 索引的最后使用时间?
【发布时间】:2017-06-27 11:09:41
【问题描述】:

我有一些带有许多索引的表,这些表在设计系统时可能在某些时候很有用,但随着代码库的进一步更新可能变得无用了。

有没有办法询问 MySQL 上次使用特定索引回答查询的时间?

这将使我不必分析我的系统发出的每一个查询来检查它可能使用的索引(并且还可以确定在实际数据的生产中真正使用了哪些索引)。

【问题讨论】:

标签: mysql indexing


【解决方案1】:

唯一可用的指标是自上次 MySQL 服务器重新启动以来使用了多少索引,这完全满足了我的需求。 This answer in "Monitor unused indexes in MySQL" 提供了一个查询(MySQL 5.6+)以返回从那时起未使用的索引:

SELECT object_schema, object_name, index_name
FROM performance_schema.table_io_waits_summary_by_index_usage 
WHERE index_name IS NOT NULL AND count_star = 0
ORDER BY object_schema, object_name;

感谢@baao 的指点。

【讨论】:

  • 请注意,根据文档:A DDL operation that changes the index structure of a table may cause the per-index statistics to be reset.。因此,如果您有 index1 和 index2 并且查询显示 index2 未使用并且您决定删除 index2,那么如果您运行该查询 index1 可能实际上会出现在结果中,就好像它也没有使用一样。
猜你喜欢
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 2021-08-03
  • 1970-01-01
  • 2022-06-14
  • 2022-07-21
  • 2022-09-26
相关资源
最近更新 更多