We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1、insert WAITING FOR lock mode S 2、insert WAITING FOR lock mode S , HOLDS lock_mode X locks rec but not gap 级别:RR 冲突的索引是同一个唯一索引,但不是同一条记录
目测是事务一和事务二都先执行过一次insert,并且锁了不同的记录;两个事务的第二条语句又insert,插入的记录恰好是对方已锁住的记录,这时候触发唯一索引冲突,都想上共享锁
The text was updated successfully, but these errors were encountered:
另外还有一种场景
事务一对记录A执行了多次INSERT ON DUPLICATE KEY UPDATE,从第二次开始,给对应的唯一索引加了next-key锁 事务二对记录B执行了多次INSERT ON DUPLICATE KEY UPDATE,从第二次开始,给对应的唯一索引加了next-key锁 两个事务的next-key锁的加锁区间相同,但是next-key互相兼容,所以此时不会发生冲突
事务一、二在进行第三次INSERT ON DUPLICATE KEY UPDATE时,首先要加上插入意向锁,此时都发现对方持有next-key锁,互相等待 之后MySQL让事务一回滚,释放相关锁,所以事务二成功执行
Sorry, something went wrong.
No branches or pull requests
1、insert WAITING FOR lock mode S
2、insert WAITING FOR lock mode S , HOLDS lock_mode X locks rec but not gap
级别:RR
冲突的索引是同一个唯一索引,但不是同一条记录
目测是事务一和事务二都先执行过一次insert,并且锁了不同的记录;两个事务的第二条语句又insert,插入的记录恰好是对方已锁住的记录,这时候触发唯一索引冲突,都想上共享锁
The text was updated successfully, but these errors were encountered: