mysql replace 死锁
问题描述
各位好,遇到一个问题,请教一下大家。我现在有一张业务表,结构如下CREATE TABLE rms_pickup_step_agg (htl_cd varchar(20) DEFAULT NULL COMMENT ’酒店编号’,para_typ int(11) DEFAULT NULL COMMENT ’汇总类型’,para_cd varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT ’汇总代码’,sub_typ int(11) DEFAULT NULL COMMENT ’子类型’,sub_cd varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT ’子类型代码’,pickup_day int(11) DEFAULT NULL COMMENT ’Pickup day’,live_dt varchar(30) DEFAULT NULL,occ float DEFAULT NULL COMMENT ’出租房数’,rev float DEFAULT NULL COMMENT ’房费收入’,update_dt datetime DEFAULT CURRENT_TIMESTAMP COMMENT ’更新时间’, UNIQUE KEY idx01_rms_pickup_step_agg (htl_cd,para_typ,para_cd,sub_typ,sub_cd,pickup_day,live_dt) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’Pickup步速表’;
现在有两个线程同时执行语句,线程1 执行replace INTO rms_pickup_step_agg (htl_cd,para_typ,para_cd,sub_typ,sub_cd,pickup_day,live_dt,occ,rev,update_dt) VALUES (’101336’, ’0’, ’0’, ’3’, ’NC’, ’14’, ’2017’, ’7.0’, ’3160.40’, ’2017-05-29 07:31:27’);不提交
线程2 执行 replace INTO rms_pickup_step_agg (htl_cd,para_typ,para_cd,sub_typ,sub_cd,pickup_day,live_dt,occ,rev,update_dt) VALUES (’101336’, ’0’, ’0’, ’3’, ’NC’, ’14’, ’2016’, ’7.0’, ’3160.40’, ’2017-05-29 07:31:27’);
发现线程2出现等待锁的情况。
为啥会出现锁?谢谢!
问题解答
回答1:你确定是出现死锁了吗,按道理说不会的吧,这个唯一索引不冲突。这个表没有主键,你加一个主键吧。
回答2:innodb默认隔离级别下,唯一索引,你又是replace,理论上只是行锁不应该出现阻塞的,确定你的操作只有这些吗? 5.7也没看到有这种事务锁的更新哪
相关文章:
1. PHP中的$this代表当前的类还是方法?2. javascript - vue2.0中使用vue2-dropzone的demo,vue2-dropzone的github网址是什么??百度不到。3. html5 - 目前 公司App 嵌入H5页面 做个 手机支付功能 没有做过 所以 请求各位有经验的 给个思路4. IOS app应用软件的id号怎么查询?比如百度贴吧的app-id=4779278135. javascript - 用swiper.js实现h5多篇文章滑动 点击文章跳转全文是另外的页面 点击返回滑动界面怎么定位到相应的swiper_slide6. javascript - avalon.js ms-on 事件绑定无效 ?7. java - butterknife怎么绑定多个view8. 鼠标过导航标签时,无效果,请问如何查找问题9. html - 这种错位的时间轴怎么布局,然后用css实现?10. java - spring-data Jpa 不需要执行save 语句,Set字段就可以自动执行保存的方法?求解