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

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: 16384
Max_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可以访问表信息的说明)。



已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值