对一张表做批量编辑,
表的基本接口如下:
t_test:
bigint id,
int status,
varchar clientId,
更新语句是:
update t_test set status=2 where clientId='...'
当批量操作时,批量提交多次update语句,每次语句执行是需要做以下操作:
1.获取主键索引
2.获取clientId列
当多次提交时,2次update,分别通过主键ID和clientId对同一行加上行锁后,都在等待对方释放锁,从而造成死锁
方案:
通过ID作为条件update,不引入主键索引之外的字段,避免死锁的机会