一个db2死锁的问题:

这个sql语句:insertintotable1select*fromtable2wherexxx多线程执行的时候就会死锁。table2里面数据量比较大,如果分开写ins... 这个sql语句:insert into table1 select * from table2 where xxx多线程执行的时候就会死锁。table2里面数据量比较大,如果分开写insert into table1 values(...) 倒不会死锁但是会花费很长时间。有什么办法解决这个问题吗? 展开
 我来答
亥昊焱0eT
2011-09-05 · 超过20用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:39.8万
展开全部
我有个办法:
1.建立一个雨table2一样的临时表,table2_tmp,可以使用create like命令
2.执行insert into table2_tmp select * from table2 where xxx with ur,以不锁表的形式插入临时表
3.再插入table1从table2_tmp

如果,第三部操作比较简单,可以省去第二步,直接插入数据到table1,关键是with ur关键字,这种最低级别的隔离级别,不锁table2。
追问
insert into table1 select * from table2 where xxx 加上with ur 还是会死锁的。
没看明白加张临时表有什么意义。
不过还是谢谢你
追答
加临时表是为了让锁发生在临时表上而不是原表上,这样就不会死锁了,但是我不明白为什么加了with ur还是会死锁
ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
liuyx_know
2011-09-05 · TA获得超过425个赞
知道小有建树答主
回答量:506
采纳率:100%
帮助的人:412万
展开全部
打开db2的超时死锁监控,要查清楚超时死锁发生在那一个表,是table1还是table2,找到原因后看能不能加个或者调整一下索引,避免表或者索引扫描,哪里这些都没有问题,看能不能将COMMIT的次数再频繁一点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式