我们必须在两个数据库之间进行选择。我们目前正在使用Firebird,但有时它会因为堆积了太多的事务历史或其他原因而滞后,为了让事情变得更好,应该应用备份恢复。
在我的具体情况下:数据库中的大多数表都填充了数字字段。查询中大多存在内部联接。几乎与我插入和选择的速率相同。(但在未来,我会考虑更严格的选择)有3个主表,其中有一些记录(每秒不断增长)。
但我想看看像上面这样的正常负载和重载(如选择和处理所选字段)中的哪一个是最好的,事件触发和存储过程执行中的总体性能,我认为这是足够好的知识,可以在它们之间进行选择(欢迎更多意见),可能会帮助其他人进行描述。
我在问
- Interbase也一样吗
- 跳向Interbase的努力值得吗
- 哪一个整体表现更好
- Interbase是否像Firebird一样存在历史问题,它不断增长数据库,并使其速度减慢
附言:我暂时不查这个问题的答案。也许会有人在正常的、每天查询的基础上管理数据库,这个问题和结果对我和其他陷入这种情况的人来说会更有用
您描述的问题通常是由糟糕的事务管理或长时间运行的事务引起的。一般来说,您不需要备份和恢复来修复此问题。备份应该足够(因为Firebird在备份过程中会进行额外的清理和垃圾收集)。
Firebird(和Interbase)都使用多版本并发控制,这意味着更改将记录在新的记录版本中。只有当没有与该交易相关的未结交易时,才会清理旧记录版本。由回滚事务创建的记录版本仅在扫描期间进行清理。
糟糕的事务管理(有长时间运行的事务,或者使用提交保留而不是提交)、意外的断开连接等可能意味着事务仍然打开,这意味着它们需要由数据库清理(Firebird中的所谓清除)。这可能会降低数据库的速度,因为它需要读取同一记录的多个版本。
如上所述,扫描是在进行备份时执行的。因此,只做一次备份就足以消除大部分问题。
有关更多详细信息,请参阅gfix内务
显而易见而且我担心相当乏味的答案是,您将不得不使用自己的工作负载对两者进行基准测试。您的应用程序工作负载可能与其他基准测试或应用程序不同。
您可以将测试数据库和测试用例发送给Firebird开发人员,以便他们提高的速度
我开始认为数据库需要分区