MYSQL有办法统计索引使用情况吗


Oracle有个索引统计的功能,可以统计每个索引的使用次数。mysql是否可以加上这个功能或者有办法统计索引使用情况吗?

mysql oracle

我是悲剧哥 12 years, 3 months ago

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里面加个字段统计。

雅蠛蝶穿花衣 answered 12 years, 3 months ago

Your Answer