当前位置:首页 > PHP教程 > PHP总结归纳

mysql5.6中sql语句统计每个目录的具体情况

mysql 5.6中sql语句统计每个索引的具体情况 http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/ 在 mysql中 ,使用 show table status like '表名'g;可以看出具体表的情况,比如: name: t engine: innodb version: 10 row_

mysql 5.6中sql语句统计每个索引的具体情况

http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/
在 mysql中 ,使用
show table status like '表名'g;可以看出具体表的情况,比如:
name: t
engine: innodb
version: 10
row_format: compact
rows: 4186170
avg_row_length: 34
data_length: 143310848
max_data_length: 0
index_length: 146030592
data_free: 6291456
auto_increment: null
create_time: 2014-02-04 15:40:54
update_time: null
check_time: null
collation: latin1_swedish_ci
checksum: null
create_options:
comment:
1 row in set (0.00 sec)

其中可以看出data_length和index_length,显示的是索引段的总的大小,那么一个表中如果有多个索引,要如何查看某个索引的大小,页呢?可以使用sql语句完成,但要先分析下表,步骤如下:
create table `t` ( `a` smallint(6) default null, `b` smallint(6) default null, `c` smallint(6) default null, key `a` (`a`), key `b` (`b`) ) engine=innodb default charset=latin1

analyze table t; select sum(stat_value) pages, index_name, sum(stat_value) * @@innodb_page_size size from mysql.innodb_index_stats where table_name = 't' and database_name = 'test' and stat_description = 'number of pages in the index' group by index_name; +-------+-----------------+-----------+ | pages | index_name????? | size????? | +-------+-----------------+-----------+ |? 8747 | gen_clust_index | 143310848 | |? 4456 | a?????????????? |? 73007104 | |? 4457 | b?????????????? |? 73023488 | +-------+-----------------+-----------+ 3 rows in set (0.00 sec)
其中用到的是mysql 5.6中的 mysql.innodb_table_stats和mysql.innodb_index_stats表 ,里面有很多有用的统计信息
要注意的是,上面的方法对于分区表也是同样适用的
【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!