gpt4 book ai didi

database - 为什么我的 Firebird 数据库对于它保存的数据量来说如此庞大?

转载 作者:太空狗 更新时间:2023-10-30 01:47:40 50 4
gpt4 key购买 nike

我最近一直在玩数据库编程,我注意到一些有点令人担忧的事情。

我获取了一个以专有的非压缩格式保存的二进制平面文件,其中包含多种不同类型的记录,构建了表示相同记录的模式,并将数据上传到 Firebird 数据库中。原始平面文件大约为 7 MB。数据库超过 70 MB!

我可以理解描述表本身有一些开销,并且我在各种表上有一些最小的索引(主要是 PK)和 FK,所有这些都会占用一些空间,但是一个因素10 似乎有点荒谬。有没有人知道是什么让这个数据库膨胀得如此严重,以及我如何才能降低大小?

最佳答案

来自 Firebird FAQ :

许多用户想知道为什么当他们从数据库中删除大量记录时他们没有取回磁盘空间。

原因是这是一个昂贵的操作,它需要大量的磁盘写入和内存——就像对硬盘分区进行碎片整理一样。这些数据使用的数据库(页面)部分被标记为空,Firebird 将在下次需要写入新数据时重用它们。

如果磁盘空间对您来说很重要,您可以通过备份然后恢复来取回空间。由于您正在进行备份以立即恢复,因此使用“禁止垃圾收集”或“不使用垃圾收集”开关(isql 中的 -G)是明智的,这将使备份进行得更快。垃圾收集用于清理您的数据库,并且由于它是一项维护任务,因此通常与备份一起完成(因为无论如何备份都必须遍历整个数据库)。但是,您很快就会放弃该数据库文件,并且没有必要清理它。

关于database - 为什么我的 Firebird 数据库对于它保存的数据量来说如此庞大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968230/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com