- 环境
- Mysql 5.6 Innodb
1.起因
我们有个需要事物的业务场景,上线之初一直运行正常,可是在晚上高峰的时候一直会有逻辑错误的问题,刚开始绝的是逻辑有问题。在阿里RDS后台发现出现大量的锁,主表的某些数据行持有锁不释放,其它的sql一直等待,知道deadlock报错。因为主表其它业务模块也会用到。所以是一个比较紧急的情况
2.错误的代码
代码可以简写为:
DBSequelize.transaction({autocommit:false,isolationLevel:'SERIALIZABLE'}).then(function(t){
return db.Tuser.create({
...},{transaction:t});
}).then(function(trans){
return db.TuserRelation.update({
...},{where:{
...},transaction:t})
}).then(function(trans){
return