我们处于这样一种情况,我们必须在2个数据库之间进行选择.
我们目前使用的是Firebird,但有时因为它堆积了太多的交易历史或其他东西而滞后,因此应该采用备份恢复以使事情变得更好.
我们目前使用的是Firebird,但有时因为它堆积了太多的交易历史或其他东西而滞后,因此应该采用备份恢复以使事情变得更好.
在我的具体情况中:
数据库主要有填充数字字段的表.
查询主要有内部联接.
几乎与我插入和选择的速率相同.
(但未来我正在寻找更严厉的选择)
有3个主表有几百亿的记录(每秒继续增长).
但我想看看哪个是最好的整体进入正常负载,如上面的那些,以及重载 – 比如选择和处理选定的字段,整体表现为事件触发和存储过程执行,我认为这是足够好的知识选择他们之间(更多的意见是受欢迎的),可能会帮助其他人民做出决定.
我问
>与Interbase相同吗?
>是否值得努力跳向Interbase?
>整体表现更好?
> Interbase是否有像Firebird这样的历史问题,它会不断增长数据库并减慢速度?
P.S.:我将暂时留下这个问题而不检查解决方案.也许会有人在正常的,每天的查询基础上真正处理数据库,问题和结果对我来说会更有用,其他人也会对这种情况感到不满.
解决方法
您描述的问题通常是由错误的事务管理或长时间运行的事务引起的.通常,您不需要备份和还原来解决此问题.备份应该足够了(因为Firebird在备份期间会进行额外的清理和垃圾收集).
Firebird(和Interbase)都使用多版本并发控制,这意味着更改将记录在新的记录版本中.只有在没有打开对该事务感兴趣的事务时,才会清除旧记录版本.由回滚事务创建的记录版本仅在扫描期间清除.
错误的事务管理(具有长时间运行的事务,或使用提交保留而不是提交),意外断开连接等可能意味着事务仍处于打开状态,这意味着它们需要由数据库清理(所谓的Firebird扫描) ).这可能会降低数据库的速度,因为它需要读取同一记录的多个版本.
如上所述,在执行备份时执行扫描.因此,只需进行备份就足以消除大部分问题.
有关更多详细信息,请查看gfix housekeeping