Firebird 2.0事务SELECT性能

时间:2009-10-29 16:02:40

标签: sql transactions performance firebird

在Firebird 2.0中,在SELECT命令上使用显式事务比使用隐式命令执行命令要快吗?

6 个答案:

答案 0 :(得分:3)

所有SQL命令(SELECT,INSERT,UPDATE等)只能在某些事务中执行。您无法在事先启动事务的情况下运行命令。

答案 1 :(得分:2)

显式和隐式事务是您用于访问数据库的组件集的一个功能,而不是Firebird本身的功能。如前所述,Firebird 始终执行事务中的所有操作。这对你有几个影响:

  • 使用“隐式”事务不能比使用“显式”事务更快,因为从Firebird的角度来看,事务是一个事务,无论是谁启动它。
  • 获得最佳表现有时需要对“提交”进行精细控制。虽然“隐式”事务不能比“显式”事务更快,但Explicit可能会更快,因为您可以控制StartTransactions和Commits。虽然您通常希望在一个事务中对数据库进行所有更新(因此它们都作为一个集合成功或失败),但有时您希望将操作拆分为多个组:如果需要批量插入许多记录,您可能需要每1000个记录左右提交一个。

答案 2 :(得分:1)

Firebird无法在没有事务的情况下执行SQL命令。

PS:如果提交事务而不是回滚事务,则会获得最佳性能结果。即使你只调用了SELECT而没有改变任何内容。

答案 3 :(得分:1)

除了已经说过的内容之外,考虑到交易可以是:

  • 读写
  • 只读

对于SELECT,最好使用只读事务

PS:还有其他类型的交易,但这两个是本主题的重要内容。

答案 4 :(得分:0)

通常,事务会增加一些开销。但是,如果在连接到Firebird时没有启动某些默认事务,则应该小心。

答案 5 :(得分:0)

根据我的经验,隐式事务往往默认为自动提交保留,因此它们应该更慢。您始终可以更改默认行为。

但是我建议使用显式事务,因为如果它阻止了太多的事务,提交保留可能会让你更加悲伤。如果确实如此,那么当Firebird遍历所有保持/阻止的事务以确定数据的正确值时,对Firebird的访问可能会显着减慢。

以下是对它的一些讨论

http://forums.devshed.com/firebird-sql-development-61/difference-active-transaction-863103.html

http://www.slideshare.net/ibsurgeon/3-how-transactionswork