一个表的数据量有1000W条,那么查看这么表占据的硬盘空间时会发现,数据本身是300M,索引是200M
这个时候,删除掉500W条数据,这个时候数据本身150M,而索引还是200M左右
你删除数据时,mysql并不会回收,被已删除数据的占据的存储空间,以及索引位。
而是空在那里,而是等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。
所以对于写比较频烦的表,要定期进行optimize,一个月一次,看实际情况而定了。
optimize table xxxxxx;
OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。
注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表。
时间: 2024-10-10 16:24:29