处理死锁

对应用程序进行编程,或指示用户重试遇到死锁错误的数据装入语句。

要允许查询访问正在被修改的表,请考虑在 SELECT 语句之前设置脏读隔离级别。

许多因素可导致死锁错误。对于并发更新和插入,如果这些更新正在使用表扫描来评估 WHERE 子句,那么数据库服务器就可能遇到死锁检测错误。

如果该表使用页面级别锁定,那么并行插入可能会导致死锁。利用 GBase 8s Excalibur Text Search DataBlade 模块执行并行搜索也可能会产生死锁错误。

当执行 etx_contains() 运算符时,它会立即生成包含与查询匹配的所有行标识的命中列表。然后应用程序开始访存由命中列表指定的行。在生成命中列表之后,但在访存行之前,另一个用户会话可能试图从命中列表更新或删除某个行。这会在该行上使用互斥锁定。更新或插入进程将等待正由原始应用程序占据的索引上的锁定。当原始应用程序试图访问该行时,数据库服务器会发出一个死锁检测错误或无法在表中定位错误。