我们正在 firebird 上运行一些测试。当我们插入时,我们注意到如果我们打开第二个会话,该会话就会挂起。因此插入似乎会阻止选择。
是否有某种选项可以启用并发。或者插入、更新、删除会阻塞整个表吗?
选择也会阻止其他会话选择吗?
一般来说,不会,插入不会阻止 Firebird 中的写入器。然而,实际上这取决于所涉及交易的配置。
READ COMMITTED NO RECORD_VERSION
的事务时,如果从另一个事务读取具有未提交版本的记录,则可能会发生以下两种情况之一:
如果配置了
WAIT
事务,它将阻塞,直到该记录的待处理事务被提交或回滚。
如果事务设置了
LOCK TIMEOUT
,如果在超时到期之前没有发生这种情况,则选择将以错误结束。
如果配置了
NO WAIT
事务,它将立即结束选择并出现错误。
请注意,自 Firebird 4.0 起,如果设置
[NO] RECORD_VERSION
设置为 ReadConsistency
(默认值!),则忽略 1
选项,而是应用 READ COMMITTED READ CONSISTENCY
。