当前位置: 代码迷 >> DB2 >> 调试,怎么在db2数据库中制造死锁
  详细解决方案

调试,怎么在db2数据库中制造死锁

热度:2213   发布时间:2013-02-26 00:00:00.0
调试,如何在db2数据库中制造死锁?
调试,如何在db2数据库中制造死锁?

------解决方案--------------------------------------------------------
先检查数据库配置参数中,检查死锁的时间间隔(DLCHKTIME,单位是毫秒,默认好像是10000),锁定超时(LOCKTIMEOUT,单位是秒,默认-1,不超时),或者确保锁定超时时间比检查死锁的时间间隔长,以致在超时前,数据库能检测到死锁。

打开两个命令行窗口1和2,顺序执行以下命令:
窗口1:db2 +c "update table_a ..."(选项 +c 是不自动提交事务)
窗口2:db2 +c "update table_b ..."
窗口1:db2 +c "update table_b ..."
窗口2:db2 +c "update table_a ..."

四个命令都执行后,在检查死锁的时间间隔内,其中一个窗口就会返回死锁(原因码为2)。
------解决方案--------------------------------------------------------
一般使用update语句的时候,仅仅是行锁吧?
得升级成表锁才能有最佳效果
先用程序1将表1升级成表锁,还不提交,不退出
再用程序2去修改表1中的某条记录,应该就会出现死锁(911)错误了
  相关解决方案