Mysql如何查找表是碎片化的

时间:2016-05-17 07:00:29

标签: mysql database-administration

目前我陷入困境,通过查询找到碎片表

我正在使用SHOW TABLE STATUS

它给我详细信息

  

Table_Name,schema_Name,Data_Length,Index_Length,Data_Free等。

使用此信息如何表示此表格为FRAGMENTED

我需要编写一个查询,它会给出碎片表名。

提前致谢。

注意:我谷歌,但我没有得到任何满意的答案。

1 个答案:

答案 0 :(得分:0)

您应该使用查询

select  
   ENGINE, 
   TABLE_NAME,
   Round( DATA_LENGTH/1024/1024) as data_length , 
   round(INDEX_LENGTH/1024/1024) as index_length, 
   round(DATA_FREE/ 1024/1024) as data_free 
from information_schema.tables  
where  DATA_FREE > 0;

之后,你应该得到碎片比例:(data_free /(data_length + index_length))* 100

如果这个数字相当大,我会说超过10%,那么你的表就是碎片。 10%是讨论号码。有些管理员使用20%。无论如何,如果你看到大号,那么你应该注意表