首页 > 解决方案 > firebird gfix 扫不干净

问题描述

我在使用 gfix sweep 命令时遇到了问题,因为它不会清理垃圾收集器。能有什么问题。数据库备份大小比数据库本身小 900mb。如果手动启动的 gfix 扫描不起作用,会有什么问题?

标签: firebird

解决方案


备份更小,因为它不包含索引,而仅包含数据库数据本身,并且仅包含最新提交的事务的数据,不包含较早的记录版本。此外,备份的存储格式效率更高,因为它是串行写入和读取的,不需要数据库本身使用的更复杂的布局。

换句话说,在几乎所有情况下,备份都会比数据库本身小,有时甚至小得多(如果您有很多索引或大量事务流失或大量 blob)。

Firebird 中的垃圾收集会删除旧的记录版本,sweep 也会清理交易信息。也不会释放分配的页面,即:数据库文件不会收缩。请参阅Firebird 了解数据库专家:第 4 集 - OAT、OIT 和 Sweep

如果你想收缩一个数据库,你需要备份恢复它,但通常不需要这样做:Firebird 会自动重用其数据页上的可用空间。

另请参阅数据库专家的 Firebird:第 6 集 - 为什么我不能缩小我的数据库


推荐阅读