MySQL查询空间使用情况

最近更新时间:2018-12-20 17:41:01

MySQL查询空间使用情况

数据库占用空间

统计数据库占用空间可使用以下SQL:

select TABLE_SCHEMA,concat(truncate(sum(DATA_LENGTH+DATA_FREE+INDEX_LENGTH)/1024/1024,2),' MB') as total_size, concat(truncate(sum(DATA_LENGTH)/1024/1024,2),' MB') as data_size,concat(truncate(sum(DATA_FREE)/1024/1024,2),' MB') as data_free, concat(truncate(sum(INDEX_LENGTH)/1024/1024,2),'MB') as index_size from information_schema.tables group by TABLE_SCHEMA order by data_length desc;

其结果中total_size为总占用空间,data_size为表占用空间,data_free为表碎片占用空间,index_size为表索引占用空间。

表占用空间

统计表占用空间方法可使用以下SQL:

select CONCAT(TABLE_SCHEMA,'.',TABLE_NAME) as table_name,concat(truncate(sum(DATA_LENGTH+DATA_FREE+INDEX_LENGTH)/1024/1024,2),' MB') as total_size, concat(truncate(sum(DATA_LENGTH)/1024/1024,2),' MB') as data_size,concat(truncate(sum(DATA_FREE)/1024/1024,2),' MB') as data_free, concat(truncate(sum(INDEX_LENGTH)/1024/1024,2),'MB') as index_size from information_schema.tables group by TABLE_NAME order by data_length desc;

其结果中total_size为总占用空间,data_size为表占用空间,data_free为表碎片占用空间,index_size为表索引占用空间。

如何整理表碎片

optimize table table_name;

备注:

1.MySQL官方建议不要经常(每小时或每天)进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可。

2.OPTIMIZE TABLE只对MyISAM,BDB和InnoDB表起作用,尤其是MyISAM表的作用最为明显。此外,并不是所有表都需要进行碎片整理,一般只需要对包含上述可变长度的文本数据类型的表进行整理即可。

3.在OPTIMIZE TABLE运行过程中,MySQL会锁定表。

金山云,开启您的云计算之旅

注册有礼