Delphi DBX firebird中的自定义事务级别
我正在寻找一种使用firebird驱动程序在Delphi的DBX中指定自定义事务级别的方法。我正在使用DelphiXE 在TSQLConnection组件的参数编辑器中,我可以设置各种TransIsolation值,并使用默认值Delphi DBX firebird中的自定义事务级别,delphi,transactions,firebird,delphi-xe,Delphi,Transactions,Firebird,Delphi Xe,我正在寻找一种使用firebird驱动程序在Delphi的DBX中指定自定义事务级别的方法。我正在使用DelphiXE 在TSQLConnection组件的参数编辑器中,我可以设置各种TransIsolation值,并使用默认值readcommitted。属性WaitOnLocks设置为True。 我预计这将使用以下firebird事务配置,但我不确定: 读写+等待+快照(请参阅) 我想使用锁定超时[秒]而不是等待。但我找不到如何或在哪里指定这一点。我查看了DBX源文件,其中有一些用于自定义事务
readcommitted
。属性WaitOnLocks
设置为True
。
我预计这将使用以下firebird事务配置,但我不确定:
读写+等待+快照
(请参阅)
我想使用锁定超时[秒]
而不是等待
。但我找不到如何或在哪里指定这一点。我查看了DBX源文件,其中有一些用于自定义事务级别的代码(搜索xilCUSTOM
),但它似乎未完成/未使用
这是因为我们在多用户datasnap应用程序中有时会遇到死锁,我认为这是因为一个事务正在等待另一个(可能是死的)事务。我们希望事务在几秒钟后中断,而不是让整个客户端无限期挂起。下面的文档
此外,TSQLConnection允许您指定特定于数据库的自定义隔离级别。自定义隔离级别由dbExpress驱动程序定义。有关详细信息,请参阅驱动程序文档。
您是否考虑购买有文档记录的interbase驱动程序?或者使用更多的本机称呼,如IBDAC或IB对象(+性能+兼容性+支持)?除了等待超时问题之外,绝对要确保了解应用程序中发生的死锁情况。这意味着有缺陷的事务逻辑、长时间运行的事务、触发器的不安全使用等,这些都会随着时间、超时与否而变得更糟。