一个新项目上线接客后,每天都有死锁发生。它的代码是从另外个项目COPY过来的。另外个项目没有死锁。RC模式下 表结构大体相同,唯一区别A表是分区表 另外个项目主键有3个字段构成(NO,ID,TIME)。 新项目由(ID,TIME)构成 ,外加唯一索引 IUX_TRANS_NO(NO,TIME) 业务是 订单完工处理 手工提交 1 更新订单状态 2 更新账户 3 更新汇总表 4 更新订单汇总号 215 这个订单号 执行 1,2,3 216 这个订单号 执行 1,2 这下 两个都上了不同的锁 第一个阻塞是 3 更新汇总 ID=212 两个215 216 都是执行更新同一行 第二个阻塞 是分区唯一索引 IUX_NO 组合的(NO,TIME) 就是 215 要执行 4 更新订单汇总号的时候 发现 216 的1号SQL 上了锁 锁定216,然后216执行2号SQL时候 被215的2号SQL阻塞了 我怀疑是 为什么 唯一索引会导致阻塞 我实验了下是不会的 会不会前面 215本身的第一条语句上了锁 |
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com