日期:2014-05-16  浏览次数:20719 次

表的数据量过大修改或删除太慢怎么解决?
有一个表因为有一个字段为blob类型,而这个表所占的硬盘空间现在达到了20多G,这个表现在控制台select、update或者delete一条数据都会慢的令人无法忍受(这种情况下本人在后台还未成功删除过一条数据),这个表的主键时increment类型的。请问如何解决这种情况下的速度的问题呢?谢谢了

------解决方案--------------------
表类型是什么?如果是MyISAM,并且该表的定义里只有一个VARCHAR、xxxTEXT或者xxxBLOB字段的话,MySQL会自动选择表类型为MyISAM Dynamic。对这种表的频繁修改会产生大量的碎片,用OPTIMIZE TABLE进行碎片整理试试。

(参考自《MySQL5权威指南》)
------解决方案--------------------
BDB类型的表,当进行,更新,删除操作时,要进行表级的锁,所以操作起来会比较慢。
建议楼主改为InnoDB类型的表。
两种表类型,都可以支持事务的。

同意用 OPTIMIZE TABLE进行优化,
但是这种优化过程会花费很长时间,楼主要事先准备好。