需求:查询碎片大于100m的表,并自动整理
查询碎片
SELECT `TABLE_SCHEMA` as 'database_name',`TABLE_NAME` as 'table_name',(`DATA_LENGTH`+`INDEX_LENGTH`)-(`TABLE_ROWS`*`AVG_ROW_LENGTH`) as splinter
FROM information_schema.`TABLES`
WHERE `TABLE_TYPE`='BASE TABLE'
HAVING splinter >104857600;
说明:
数据总大小:DATA_LENGTH+INDEX_LENGTH 实际表空间大小: TABLE_ROWS*AVG_ROW_LENGTH 碎片大小 = 数据总大小-实际表空间大小
碎片整理 根据上面查询的结果,执行:
optimize table database_name.table_name
















