MySQL 的优化表(OPTIMIZE TABLE)

本文发布于 5 年前,部分内容可能已经失去参考价值。

数据表所占用的空间(简称“表空间”)一般会大于其数据空间索引空间的和。

当数据被删除时,其所占空间并不会立即释放,而是等待新数据写入,这会导致出现许多磁盘碎片。使用 OPTIMIZE TABLE 或 ALTER TABLE 可以回收碎片,重组文件。优化表的过程类似于 Windows 碎片整理。

操作过程会导致该表上的写操作无法执行。

一般在删除了大批量数据或更改了许多可变长度字段后执行优化表

碎片率 = 100% - (数据空间 + 索引空间) / 表空间

优化后碎片率接近于 0%,数据空间索引空间也会变小,此时 表空间 接近于“数据空间 + 索引空间


MyISAM 引擎上遇到优化后导致获取行数为 0,SELECT 数据只有 1 条的情况,需要执行修复表REPAIR TABLE),使数据恢复正常。执行后结果显示:Number of rows changed from 0 to xxxxxx

xoyozo 6 年前
转载请注明出处
可能相关的内容