多批次并行,经常出现死锁,求指点。

各位专家大神们!
    您好!      
         

我现在的情况是有对多个来源系统数据进行处理,例如:3G、2G等十几个来源系统。采取的是多批次并行的处理方式,程序中大量的SELECT、INSERT和少量的UPDATE操作,由于各个系统数据量的不同,即使同时跑批,到后面可能处理的相同的表有不同的操作,例如:同时对一个表多次INSERT和SELECT,甚至是UPDATE。我现在的操作如下:


        1.在SELECT 时加入了UR。
        2.基本上在每个事务上都加了COMMIT。
        3.根据IBM的专家建议调整了数据库的死锁参数和DB2_EVALUNCOMMITED、DB2_SKIPINSERTED、DB2_SKIPDELETED3个参数。
        虽然现在的死锁概率大大减少了,但是还是会出现死锁的现象:-911,2,400001,而且出现死锁的地方没有规律性。
        请问各位专家大神们,有什么好的建议,能够尽量的避免死锁。
                                                                              谢谢!
参与17

16 同行回答

shangke1207 shangke1207 数据库运维工程师 济宁银行
可以用db2pdcfg来检测一下是那个地方出的问题,然后针对那个地方进行优化显示全部
可以用db2pdcfg来检测一下是那个地方出的问题,然后针对那个地方进行优化 收起
银行 · 2014-04-24
浏览613
lucky_yu lucky_yu 研发工程师 北京泛鹏天地科技有限公司
回复 5# 欧阳峰          这种情况确实存在!有没有什么办法避免这种问题呢?显示全部
回复 5# 欧阳峰
         这种情况确实存在!有没有什么办法避免这种问题呢? 收起
软件开发 · 2014-04-22
浏览661
欧阳峰 欧阳峰 其它 Freelancer
这个和死锁没关系,显示全部
这个和死锁没关系, 收起
IT其它 · 2014-04-22
浏览673
lucky_yu lucky_yu 研发工程师 北京泛鹏天地科技有限公司
回复 2# 欧阳峰 INSERT的时候,对表是IX,对行是X,当多个批次同时跑的时候同时对一个表进行INSERT时会发生锁升级,是会发生死锁的。显示全部
回复 2# 欧阳峰 INSERT的时候,对表是IX,对行是X,当多个批次同时跑的时候同时对一个表进行INSERT时会发生锁升级,是会发生死锁的。 收起
软件开发 · 2014-04-22
浏览693
欧阳峰 欧阳峰 其它 Freelancer
3.select for update是会产生死锁的显示全部
3.select for update是会产生死锁的 收起
IT其它 · 2014-04-22
浏览658
欧阳峰 欧阳峰 其它 Freelancer
1.首先select insert是不会产生死锁的,update的时候产生死锁2.因此调整好update操作的业务逻辑显示全部
1.首先select insert是不会产生死锁的,update的时候产生死锁
2.因此调整好update操作的业务逻辑 收起
IT其它 · 2014-04-22
浏览661

提问者

lucky_yu
研发工程师 北京泛鹏天地科技有限公司
评论26

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2014-04-22
  • 关注会员:1 人
  • 问题浏览:11659
  • 最近回答:2014-05-13
  • X社区推广