日期:2014-05-16 浏览次数:20650 次
今天刚刚知道Oracle有个索引统计的功能,可以统计每个索引的使用次数。作为一个Oracle的门外汉,我还是再次感叹人家做的是真细致。第二个想法就是给MySQL也加上。
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数。从这两个数据基本上可以描绘一棵btree的大小了。从其中的比例关系也可以看到为什么亿级别的数据只要三层索引了,这是题外话。