关于使用多线程批量插入,获取异步执行结果时一直阻塞的问题记录!
主线程开启了事务并对单表进行了truncate会导致表被锁定,而子线程需要插入数据时也会尝试获取同一表的锁,由于主线程持有该表的锁并且在等待子线程执行完成时被阻塞,子线程无法获取到所需的锁从而导致死锁的发生。在主线程进行truncate操作之前设置一个保存点,然后在truncate操作之后提交事务。做个数据迁移功能,先清空表,然后批量插入,由于插入的数据量太大,同步执行太慢,虽然使用了mybatis plus 的savebatch然后也优化了些但是还有点差距,所以需要使用多线程进行批量分批插入操作!
原创
2024-05-17 14:45:11 ·
405 阅读 ·
0 评论