MYSQL有办法统计索引使用情况吗
Oracle有个索引统计的功能,可以统计每个索引的使用次数。mysql是否可以加上这个功能或者有办法统计索引使用情况吗?
Answers
Percona版本的information_schema.innodb_index_stats 已经有索引的统计信息。
先来看下原来的表结构。
CREATE TEMPORARY TABLE
INNODB_INDEX_STATS
(
table_schema
varchar(192) NOT NULL DEFAULT '',
table_name
varchar(192) NOT NULL DEFAULT '',
index_name
varchar(192) NOT NULL DEFAULT '',
fields
bigint(21) unsigned NOT NULL DEFAULT '0',
rows_per_key
varchar(256) NOT NULL DEFAULT '',
index_total_pages
bigint(21) unsigned NOT NULL DEFAULT '0',
index_leaf_pages
bigint(21) unsigned NOT NULL DEFAULT '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8
记录的是每个索引的信息,其中index_total_pages是一个索引的所有page数,index_leaf_pages其中的叶子page数。
这个“表”加一列,统计索引被使用的次数。其中的信息当然需要在执行时统计。所幸的是InnoDB每次使用索引都是统一的入口(index_read), 就在index里面加个字段统计。