MySQL: 并发replace into的死锁问题分析

  1. 云栖社区>
  2. 博客>
  3. 正文

MySQL: 并发replace into的死锁问题分析

zhaiwx_yinfeng 2016-05-10 15:26:06 浏览7412
展开阅读全文
测试版本:MySQL5.6.23测试表:
create table t1 (a int auto_increment primary key, b int, c int, unique key (b));并发执行SQL
replace into t1(b,c) values (2,3)  //使用脚本,超过3个会话

背景

replace 操作可以算是比较常用的操作类型之一,我们先来理一下,对于上例,一条简单的replace into操作的主要流程包括哪些。

 

Step 1. 正常的插入逻辑

首先插入聚集索引,在上例中a列为自增列,由于未显式指定,每次Insert前都会生成一个不冲突的新值

随后插入二级索引b,由于其是唯一索引,在检查duplicate key时,加上记录锁,类型为LOCK_X (对于普通的INSERT操作,当需要检查dupl

网友评论

登录后评论
0/500
评论
zhaiwx_yinfeng
+ 关注