死锁的定义是互相持有对方等待获取的锁资源。5#的兄弟只是在制造一个锁等待的场景,而不是死锁。当死锁循环发生时,除非某些外部代理进行干涉,否则所涉及的所有事务将无限期地等待释放锁。在第一个 CLP 窗口 UPDATE COMMAND OPTIONS USING c OFF ...
显示全部死锁的定义是互相持有对方等待获取的锁资源。5#的兄弟只是在制造一个锁等待的场景,而不是死锁。当死锁循环发生时,除非某些外部代理进行干涉,否则所涉及的所有事务将无限期地等待释放锁。
在第一个 CLP 窗口
UPDATE COMMAND OPTIONS USING c OFF
CONNECT TO SAMPLE
CREATE TABLE deadtable (c1 INTEGER)
COMMIT
INSERT INTO deadtable VALUES (1)
在第二个CLP窗口执行如下命令
UPDATE COMMAND OPTIONS USING c OFF
CONNECT TO SAMPLE
INSERT INTO deadtable VALUES(2)
SELECT * FROM deadtable
然后在在第一个窗口中执行
SELECT * FROM deadtable
这样就会造成死锁,因为双方都在等待对方释放锁,必须让其中一个应用程序回滚,才能打破锁冲突。DB2 死锁监视器进程会在 DLCHKTIME 设置的时间内内选择一个应用程序并使它回滚。一个窗口将返回查询结果,另一个窗口将返回死锁消息
收起