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. 為什么我ping不通我的docker容器呢???2. webpack - vuejs+java前后臺分離實現及部署問題3. mysql - 這條聯合sql語句哪里錯了4. mysql改密碼失敗了,舊密碼新密碼都不能登錄了...5. 網站在移動的環境下手機,pc打不開6. php - TP5的登錄驗證問題7. mysql - 我的myeclipse一直連顯示數據庫連接失敗,不知道為什么8. javascript - 微信h5發送圖文信息,部分設備點擊“發送”按鈕時沒反應,問題較難重現,如何能找到可能存在問題的點?9. 在html文件的目錄下輸入代碼按回車后顯示這個,哪位大佬幫幫我 呀10. linux pdo 安裝配置中 make 遇到問題,請大家指教!
