一个db2死锁的问题:
这个sql语句:insertintotable1select*fromtable2wherexxx多线程执行的时候就会死锁。table2里面数据量比较大,如果分开写ins...
这个sql语句:insert into table1 select * from table2 where xxx多线程执行的时候就会死锁。table2里面数据量比较大,如果分开写insert into table1 values(...) 倒不会死锁但是会花费很长时间。有什么办法解决这个问题吗?
展开
2个回答
展开全部
我有个办法:
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。
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 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |