增值通信服务商数据库测试

死锁场景的制造

我想制造个死锁的场景,测试一下db2cos脚本,通过命令行如何模拟制造一个死锁的发生???
参与6

5同行回答

liuyunanliuyunan系统分析师aviva-cofco.,LTD
1,设置注册表变量不自动提交 db2set DB2OPTIONS=+c2,db2 update 某表3,db2 select 某表4,db2pd -d dbname -locks show wait显示全部
1,设置注册表变量不自动提交 db2set DB2OPTIONS=+c
2,db2 update 某表
3,db2 select 某表
4,db2pd -d dbname -locks show wait收起
保险 · 2011-11-22
浏览780
andychenandychenIT支持东北农业大学
学习了~显示全部
学习了~收起
教育/培训 · 2011-11-21
浏览724
xxzmxxxxzmxx软件开发工程师招行软件中心
做之前先 db2pdcfg -catch deadlock显示全部
做之前先 db2pdcfg -catch deadlock收起
互联网服务 · 2011-11-21
浏览717
xxzmxxxxzmxx软件开发工程师招行软件中心
哇,哥们这个太容易了。说下原理,死锁之所以会导致,是由于两个事务都在等待双方释放锁。这种情况如何才能发生呢。一般是如下情景:Tran a: insert/update A,select/Update B(B包含A数据和C数据)Tran b: insert/update C,select/update D(D包含C数据和A数据)简单说,就是导致死锁的sql,一...显示全部
哇,哥们这个太容易了。

说下原理,死锁之所以会导致,是由于两个事务都在等待双方释放锁。这种情况如何才能发生呢。

一般是如下情景:

Tran a: insert/update A,select/Update B(B包含A数据和C数据)
Tran b: insert/update C,select/update D(D包含C数据和A数据)

简单说,就是导致死锁的sql,一般占据了过多的行锁,而且大部分行锁并不是自己所需要的。

通常创建索引或者重建表可以解决它。

所以,你自己可以动手去根据它来试试收起
互联网服务 · 2011-11-21
浏览853
macrozengmacrozeng数据库管理员IBM
死锁的定义是互相持有对方等待获取的锁资源。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 设置的时间内内选择一个应用程序并使它回滚。一个窗口将返回查询结果,另一个窗口将返回死锁消息收起
政府机关 · 2011-11-20
浏览716

提问者

beijing_2011
安全审计师北京华为

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-11-20
  • 关注会员:1 人
  • 问题浏览:4006
  • 最近回答:2011-11-22
  • X社区推广