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

各位专家大神们!
    您好!      
         

我现在的情况是有对多个来源系统数据进行处理,例如: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同行回答

ilovebaishikeleilovebaishikele数据库管理员北京首都公路发展集团
学习了显示全部
学习了收起
互联网服务 · 2014-05-13
浏览1609
wangyaxwangyax软件开发工程师金融机构
产生死锁本质上是业务逻辑不清晰造成的。在批量执行的时候通过调度程序设置调度次序,通过测试验证数据库支持多大的并行度。尽量做到相同的表串行插入,并行读取,读取依赖于插入完成;不同的表做到并行处理,同时尽量避免并行度过大导致锁升级。...显示全部
产生死锁本质上是业务逻辑不清晰造成的。在批量执行的时候通过调度程序设置调度次序,通过测试验证数据库支持多大的并行度。尽量做到相同的表串行插入,并行读取,读取依赖于插入完成;不同的表做到并行处理,同时尽量避免并行度过大导致锁升级。收起
互联网服务 · 2014-05-08
浏览1595
lucky_yulucky_yu研发工程师北京泛鹏天地科技有限公司
回复 14# michaelyoung 看来只有这样了!显示全部
回复 14# michaelyoung

看来只有这样了!收起
软件开发 · 2014-05-07
浏览1604
michaelyoungmichaelyoung软件开发工程师IBM
大批量地同时对相同的表进行增删改,死锁是很难避免的。看看在不影响业务逻辑的前提下,能否考虑调整应用?显示全部
大批量地同时对相同的表进行增删改,死锁是很难避免的。看看在不影响业务逻辑的前提下,能否考虑调整应用?收起
系统集成 · 2014-05-07
浏览1621
lucky_yulucky_yu研发工程师北京泛鹏天地科技有限公司
回复 12# ydliujiang 1.关于隔离级别我在Data sources设置的2(Read COMMITTED),相关程序上只要用到SELECT的基本上都加上了WITH UR。2.根据死锁监控的情况,进行优化,我也是一边在做,一边聆听各位专家的意见。...显示全部
回复 12# ydliujiang
1.关于隔离级别我在Data sources设置的2(Read COMMITTED),相关程序上只要用到SELECT的基本上都加上了WITH UR。2.根据死锁监控的情况,进行优化,我也是一边在做,一边聆听各位专家的意见。收起
软件开发 · 2014-05-05
浏览1629
ydliujiangydliujiang数据库管理员IBM
是采用的默认隔离级别CS还是更高的,是否可以降低;创建死锁监视器抓出来分析,比如那些SQL明显发生概率高,评估期对应执行计划是否占用资源时间较久,优化到更短的时间,对应哪些app概率较高,调整app对应的跑批功能脚本顺序尽量规避开。...显示全部
是采用的默认隔离级别CS还是更高的,是否可以降低;创建死锁监视器抓出来分析,比如那些SQL明显发生概率高,评估期对应执行计划是否占用资源时间较久,优化到更短的时间,对应哪些app概率较高,调整app对应的跑批功能脚本顺序尽量规避开。收起
金融其它 · 2014-05-05
浏览1552
lucky_yulucky_yu研发工程师北京泛鹏天地科技有限公司
回复 9# sunyangnj 现在应用基本上是按照这个处理逻辑的,但是有一些由于业务逻辑,没有办法改变。我也问过做过几年DB2的DBA,他也给过同样的建议,我不是很明白这样做有什么好处呢?显示全部
回复 9# sunyangnj
现在应用基本上是按照这个处理逻辑的,但是有一些由于业务逻辑,没有办法改变。我也问过做过几年DB2的DBA,他也给过同样的建议,我不是很明白这样做有什么好处呢?收起
软件开发 · 2014-05-05
浏览1790
zhugfangzhugfang软件开发工程师杭州信雅达
尽量使用外连接加工临时表,最后插入目标表,来减少update的几率显示全部
尽量使用外连接加工临时表,最后插入目标表,来减少update的几率收起
互联网服务 · 2014-04-30
浏览1811
sunyangnjsunyangnj技术经理苏宁金融研究院
看看应用中能否调整一下各并行批中的操作对象表的次序,尽量按同一次序处理表,比如批次1:表1,表2,表3;批次2:表1,表2,表3.显示全部
看看应用中能否调整一下各并行批中的操作对象表的次序,尽量按同一次序处理表,比如批次1:表1,表2,表3;批次2:表1,表2,表3.收起
金融其它 · 2014-04-28
浏览1808
weiruan85weiruan85数据库管理员ibm
应用设计的问题,跟数据库没啥关系。显示全部
应用设计的问题,跟数据库没啥关系。收起
政府机关 · 2014-04-24
浏览1796

提问者

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

相关问题

相关资料

相关文章

问题状态

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