操作系统:Solaris
数据库:Informix
我有一个有 2 个线程的进程:
线程 1 处理新事务并执行 DB INSERTS
线程 2 处理现有事务并执行 DB DELETES
问题
线程 1 不断在表上执行 INSERTS(添加新事务)。
线程 2 不断地根据主键从同一个表中执行 DELETES(删除过期事务)
244
由于页/表锁定而发生的 Informix 错误,INSERTS 失败。
我猜,DELETE 是在做一个表锁而不是行锁,并阻止插入工作。
有什么办法可以防止这种死锁吗?
编辑
我发现了另一个线索。该244
错误是由SELECT
查询引起的。在执行操作之前,and
操作都会从频繁更新的表中执行一次。insert
delete
select
隔离设置为COMMITTED READ
。当我select
从 dbaccess 手动对这个表执行操作时,当删除发生时,我得到了同样的错误。