MySQL查询空间使用情况

最近更新时间:2021-01-06 18:11:53

数据库占用空间

统计数据库占用空间可使用以下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会锁定表。

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

免费注册