查看表的碎片空间并优化表文件

来源:互联网 发布:mac版字体下载 编辑:程序博客网 时间:2024/05/01 19:53
innodb在执行删除时,只是物理上做了被删除的标记,实际上并没有从数据文件中真正删除。即,所占用的空间也没有实际释放。后台的purge线程会定期清理这些已经删除的记录和文件,但并不会回收这些已经删除的空间给操作系统,即会在数据文件中产生许多空洞,数据文件也会越来越大。
查看空洞的方法:

通过SHOW TABLE STATUS的结果,查看实际数据Data_length和空洞数据Data_free的比例。如果Data_free特别大,说明这个表需要优化了,优化方法可以使用ALTER TABLE table_name ENGINE = INNODB;

mysql> show table status like 't2'\G*************************** 1. row ***************************           Name: t2         Engine: InnoDB        Version: 10     Row_format: Compact           Rows: 13 Avg_row_length: 1260    Data_length: 16384Max_data_length: 0   Index_length: 0      Data_free: 0 Auto_increment: NULL    Create_time: 2017-11-16 05:23:08    Update_time: NULL     Check_time: NULL      Collation: utf8_general_ci       Checksum: NULL Create_options:         Comment: 1 row in set (0.00 sec)


show table status显示的每个列的意义如下:


Name:表名


Engine:存储引擎类型


Version:.frm文件的版本号?


Row_format:行格式


Rows:表中行数,INFORMATION_SCHEMA下的表是NULL


Avg_row_length:平均行长度


Data_length:Myisam表时数据文件的大小,单位字节
                      :innodb表指聚集索引分配的内存大小,以页的大小为单位


Max_data_length:myisam表数据文件的最大长度。如果给定了数据指针的大小,这是可以被存储在表中的数据的字节总数。
                               :InnoDB表未使用


Index_length:MyISAM表索引文件大小;InnoDB表二级索引的大小


Data_free:分配但未使用的字节大小


Auto_increment:AUTO_INCREMENT的下一个值


Create_time:表创建时间


Update_time:表最近更新的实际


Check_time:表最近check的实际


Collation:The table's character set and collation.


Checksum:checksum值


Create_options:CREATE TABLE的额外选项


Comment:创建表时使用的评注(或者有关为什么MySQL可以访问表信息的说明)。



原创粉丝点击