最近更新时间: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会锁定表。
纯净模式