我们处于必须在thoose 2数据库之间进行选择的情况。
我们目前在Firebird上,但有时会滞后,因为它堆积了太多的事务历史记录或某些东西,并且应应用备份-还原以使情况变得更好。
在我的具体情况下:
数据库中大多数表都填充有数字字段。
在查询中主要有内部联接。
我插入和选择的速率几乎相同。
(但将来我会选择更严格的选择)
有3个主表,这些表有数十亿条记录(保持每秒增长)。
但是我想看看对于像上面的thoose这样的正常负载和过载(例如选择和处理选定的字段),对事件触发和存储过程执行而言的整体表现而言,总体上最好的选择是我认为足够好的,足够的知识来选择他们之间(欢迎更多意见),可能会帮助其他人采取决定。
我问
附注:我将暂时不回答这个问题,以寻求解决方案。也许会有人根据正常的日常查询来比较数据库,而问题和结果对我和其他人来说更有用。
最佳答案
您描述的问题通常是由不良的事务管理或长时间运行的事务引起的。通常,您不需要备份和还原即可解决此问题。备份应该足够了(因为Firebird在备份期间会进行额外的清理和垃圾收集)。
Firebird(和Interbase)都使用多版本并发控制,这意味着更改将记录在新的记录版本中。仅当没有打开的事务与该事务有关时才清除旧记录版本。由回滚事务创建的记录版本仅在扫描期间被清除。
错误的事务管理(具有长时间运行的事务,或使用提交保留而不是提交),意外断开连接等可能意味着事务仍处于打开状态,这意味着它们将需要由数据库清除(在Firebird中称为“清除”) )。这可能会降低数据库的速度,因为它需要读取同一记录的多个版本。
如前所述,在执行备份时执行扫描。因此,仅进行备份就足以消除大多数问题。
有关更多详细信息,请查看gfix housekeeping
关于sql - Firebird 2.5 VS Interbase 9/XE-哪个执行速度更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6134899/