一般大批量删除或者更新后会产生碎片,需要回收
以MYSQL5.7为例
查看碎片大小 :
SELECT TABLE_NAME, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) AS total_mb,ROUND(DATA_FREE/1024/1024,2) AS free_mb FROM information_schema.TABLES WHERE TABLE_NAME='m_log';
回收碎片并更新统计信息:
ALTER TABLE m_log ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE;
ANALYZE TABLE m_log;