【发布时间】:2012-04-30 14:57:34
【问题描述】:
我需要构建一个表,其中包含一个占行大小的 98% 的大型 BLOB。但是,此 BLOB 只会暂时保留在行中,并将移动到另一个位置,然后 BLOB 列将设置为 NULL。 MySQL 可以重用这个空间还是它总是行的一部分?如果它不能自动重用,是否有另一种方法(比如优化表)可以用来手动回收这个空间?如果没有,我可能需要找到另一种解决方案来处理这组特定的数据。
【问题讨论】:
-
你可以将它存储在 MySQL 之外,比如 Redis 或其他键/值存储吗?
-
数据将通过批处理异步过程转移到其他存储(S3)。出于事务目的,初始写入必须是 mysql。我可以在事务期间将它移动到另一个存储,例如 Redis(或持久消息队列),但是这个过程必须是一个快速路径,所以我犹豫要添加其他移动部分。这就是为什么我专注于将 BLOB 移至 S3 后是否/如何回收空间。如果绝对没有办法回收,那么 Redis 可能是下一个选择,因为它是我们架构的一部分。