MySQL更新期间BLOB数据管理为null?

时间:2012-03-06 07:32:21

标签: mysql storage blob

我有几个事务表,在MySQL中有一个逻辑上放置的text和一个blob列。一段时间后,超过X天的行不需要这些数据列。我需要尽可能地保持存储感知。这是在群集中具有有限本地和NFS存储的多个节点上,因此将它们保留为不可行的文件。

两个明显的解决方案,即确保释放blob表存储的更好(如果有)方法:

  1. 在某些计划中,更新日期<的所有行。 X天前将text和blob列设置为null。这是否实际上释放了“隐藏”表中的blob数据存储?
  2. 将这些blob保存在单独的表中,然后从表中删除日期< X天前。
  3. 保持良好的架构形式,我不希望每个事务表都有一个blob表,以保持事务键独立,我不希望在一个blob表中有关联/智能/复合键

    哪种机制最适合MySQL中的时间blob存储?

1 个答案:

答案 0 :(得分:1)

我假设您的数据库中有InnoDB或NDB存储引擎。在这种情况下,默认情况下,在更新/删除行或表(包括BLOB列)之后,永远不会回放磁盘空间。

只有办法解决问题。设置

innodb_file_per_table=1
my.cnf中的

,每个表都有单独的文件。然后,第二种方式(不需要时删除表)将恢复存储空间。