监视MySQL中未使用的索引

监视MySQL中未使用的索引,mysql,database-administration,Mysql,Database Administration,我有一组服务器,其中维护查询的执行需要很长时间。这是由于开发人员在不同点创建了索引。是否有任何方法可以监视对执行产生不利影响的未使用索引。之前的mysql 5.6 默认情况下,mysql包没有太多的统计数据可供分析,但有一些非官方的补丁可供分析 比如userstats 通过这个补丁,您可以分析统计数据和未使用的索引 请按照以下链接进行操作 在MySQL 5.6及更高版本中,性能模式跟踪索引IO。如果索引没有IO活动,则表示该索引未被使用 sys模式现在提供了一个方便的视图,可以更容易地识别未使

我有一组服务器,其中维护查询的执行需要很长时间。这是由于开发人员在不同点创建了索引。是否有任何方法可以监视对执行产生不利影响的未使用索引。

之前的mysql 5.6

默认情况下,mysql包没有太多的统计数据可供分析,但有一些非官方的补丁可供分析

比如userstats

通过这个补丁,您可以分析统计数据和未使用的索引

请按照以下链接进行操作

在MySQL 5.6及更高版本中,性能模式跟踪索引IO。如果索引没有IO活动,则表示该索引未被使用

sys模式现在提供了一个方便的视图,可以更容易地识别未使用的索引:


请注意,这显示了自上次重新启动mysqld以来未使用过的索引。性能模式统计信息在启动时重置。

对于MySQL 5.7版及更高版本,您可以使用SYS SCHEMA以用户可理解的原始格式检索数据。SYS schema从底层性能模式和信息模式中获取数据,并以更好的、可理解的格式呈现它们。请参阅

谢谢,我现在正在使用5.7.9。是否有一种方法可以在一定时间内自动获取未使用的索引,或者在未使用的索引变得过大时发送邮件?您可以使用自定义SQL对象来利用information_Schema中的可用信息,MySQL 5.5+的Performance_Schema和MySQL 5.7+的SYS Schema在monitors/advisors中使用的基本SHOW语句中没有公开。CSO不仅允许您监控服务器指标,还允许您监控服务器数据。如果您希望监视没有IO活动的未使用索引并接收邮件(如果有),请尝试。您可以使用此查询获取信息,
从sys.schema\u Unused\u index中选择object\u schema、object\u name、index\u name
DROP VIEW IF EXISTS unused_indexes;

CREATE VIEW unused_indexes AS
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;