MySql使用InnoDB回收blob空间

时间:2012-04-30 14:57:34

标签: mysql innodb

我需要构建一个包含大BLOB的表,该BLOB将占用行大小的98%。但是,此BLOB将仅暂时保留在行中,并将移动到另一个位置,然后BLOB列将设置为NULL。 MySQL可以重用这个空间还是它总是成为行的一部分?如果无法自动重复使用,是否有其他方法(比如优化表)可以用来手动回收这个空间?如果没有,我可能需要找到另一种处理这一特定数据集的解决方案。

1 个答案:

答案 0 :(得分:1)

听起来你肯定会更好地使用Redis,甚至只是将blob存储在文件系统上。这实际上是我推荐的;将数据保存在文件中并将文件名放在表中。异步上传到s3完成后,将其设置为null。如果您使用的是优化的文件系统来处理大型对象,则总是比插入数据库更快。

如何精确存储blob不仅取决于数据的长度,还取决于您实际使用的mysql版本。删除的行总是可以重用,当后续插入不重用空间时,可以使用优化表恢复它。但优化表将锁定该表。所以你第二次放慢了系统的速度。