Kettle提示事务(进程 ID 56)与另一个进程被死锁在 锁 资源上......

本文探讨了在使用Kettle进行数据抽取时遇到的死锁异常,详细分析了异常原因,即不同组件同时操作同一表导致的问题。通过调整插入更新组件的设置,如减少复制份数或更改提交记录数量,有效解决了死锁问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为刚接触Kettle的菜鸟级选手,在使用Kettle抽取数据的时候碰到如下异常:

org.pentaho.di.core.exception.KettleDatabaseException: 
Couldn't get row from result set
事务(进程 ID 56)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。

在这里插入图片描述
查了一下,这个异常的原因是不同组件同时操作一个表造成的,但是想了想好像我的流程里面没有同时更新或者插入同一张表。。。。等等,插入更新组件上面的2是什么意思,又查了一下,原来所谓的复制2份等于是开了2个线程在同步数据,那就的确是因为同时操作同一个表造成的了。
解决方法
第一种:将插入更新复制份数设置为1份;
第二种:将插入更新中的 提交记录数量 设置为1,可以解决问题,但是这样的话等于没有批量提交,肯定会很慢;

补充:我用的是sqlserver,同事用的oracle设置为2份没遇到这个问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值