ZODB不会释放硬盘空间

时间:2015-04-01 21:30:35

标签: python python-3.x zope zodb

我通过创建一个巨大的对象来测试ZODB,然后它发出警告。 接下来,我继续从root中删除对象,commit。 .fs文件的空间仍为1GB。然后我杀了REPL。我重新打开了python,建立了连接,但现在我似乎无法摆脱这个1 GB的文件(除了尝试从磁盘本身删除它)。

代码类似:

storage = FileStorage('Data.fs')
db = DB(storage)
connection = db.open()
root = connection.root()

随后创建了一些巨大的对象,起初我实际上做了

root['bigObj'] = 'small_str',
transaction.commit()

尝试覆盖。之后我刚刚删除了键/值。

我错过了哪一部分?

1 个答案:

答案 0 :(得分:2)

ZODB是仅附加数据库。除非明确告知,否则ZODB永远不会收回或覆盖旧信息。这意味着,如果需要,您可以创建无限的撤消历史记录。

要回收pack ZODB database所需的磁盘空间。

其他数据库(MySQL,PostgreSQL)具有类似的特征。例如,PostgreSQL必须不时VACUUM