日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

高并發(fā)狀態(tài)下Replace Into造成的死鎖問(wèn)題解決

瀏覽:266日期:2023-02-18 16:43:25
目錄
  • 1.問(wèn)題出現(xiàn):
  • 2.分析解決
  • 3.解決方案:

1.問(wèn)題出現(xiàn):

在測(cè)試階段,大數(shù)據(jù)并發(fā)的情況下,發(fā)現(xiàn)sql語(yǔ)句造成表的死鎖,過(guò)一段時(shí)間,死鎖消失。于是進(jìn)行排查

報(bào)錯(cuò)如下:

對(duì)應(yīng)的sql語(yǔ)句如下:

    @Insert("replace into ${tableName}( windcode,date, \n" +    "      code, high, open, low, \n" +    "      `close`, volume, turnover,gtm_modify) "    + "values (#{obj.windcode},#{obj.date},#{obj.code},#{obj.high},#{obj.open},#{obj.low},#{obj.close},#{obj.volume},#{obj.turnover},#{obj.updateTime})" )    int insertOne(@Param("obj") KDTO obj, @Param("tableName") String tableName);

在排除了數(shù)據(jù)問(wèn)題和線程重復(fù)調(diào)用以后,我們關(guān)注了一下sql語(yǔ)句本身。 看了網(wǎng)上很多經(jīng)驗(yàn)分享,覺(jué)得問(wèn)題可能出現(xiàn)在 Replace Into 語(yǔ)句上。

2.分析解決

首先我們分析一下為什么并發(fā)replace into導(dǎo)致MySQL死鎖

Replace into 一般作用是,當(dāng)存在沖突時(shí),會(huì)把舊記錄替換成新的記錄。也就是說(shuō)這條語(yǔ)句執(zhí)行,分為了兩個(gè)大步:判斷和執(zhí)行

1.判斷:

首先判斷我們需要操作的記錄是否存在(根據(jù)主鍵或者唯一索引判斷

2.操作:

  • 針對(duì)不存在的記錄,語(yǔ)句會(huì)執(zhí)行insert,插入操作。
  • 針對(duì)已經(jīng)存在的記錄,語(yǔ)句可以拆分為delete+insert操作

測(cè)試:

建立表

插入數(shù)據(jù):

我們使用replace into語(yǔ)句去執(zhí)行一個(gè)已經(jīng)存在的數(shù)據(jù):

可以清楚的發(fā)現(xiàn),影響的行數(shù)是兩行

第一行的數(shù)據(jù)被修改了

我們使用replace into語(yǔ)句去執(zhí)行一個(gè)不存在的數(shù)據(jù):

可以清楚的發(fā)現(xiàn),影響的行數(shù)是一行

執(zhí)行了插入操作:

邏輯非常的清晰,但是這種單條sql語(yǔ)句在什么情況下會(huì)出現(xiàn)死鎖呢?我們就要去考慮這個(gè)加鎖的時(shí)機(jī)。

正常的插入邏輯是:

  • 首先插入聚集索引記錄,在上例中id列為自增列。
  • 隨后插入二級(jí)索引num,由于其是唯一索引,在檢查duplicate key時(shí),為其加上類型為L(zhǎng)OCK_X的記錄鎖。

發(fā)現(xiàn)錯(cuò)誤:

  • 由于檢測(cè)到duplicate key,因此第一步插入的聚集索引記錄需要被回滾掉(row_undo_ins)。
  • 從InnoDB層失敗返回到Server層后,收到duplicate key錯(cuò)誤,首先檢索唯一鍵沖突的索引,并對(duì)沖突的索引記錄(及聚集索引記錄)加鎖。

轉(zhuǎn)換模式:

如果發(fā)生uk沖突的索引是最后一個(gè)唯一索引、沒(méi)有外鍵引用、且不存在delete trigger時(shí),使用UPDATE ROW的方式來(lái)解決沖突;
否則,使用DELETE ROW + INSERT ROW的方式解決沖突。

更新記錄:

  • 對(duì)于聚集索引,由于PK列發(fā)生變化,采用delete + insert 聚集索引記錄的方式更新。
  • 對(duì)于二級(jí)uk索引,同樣采用標(biāo)記刪除 + 插入的方式。

所以死鎖的問(wèn)題多半就會(huì)出現(xiàn)在X記錄鎖上面。

死鎖分析:

所以再多線程高并發(fā)的環(huán)境狀態(tài)下,存在兩個(gè)事務(wù)同時(shí)去獲取一個(gè)記錄的修改的情況:

  • 事務(wù)1拿到X記錄鎖,
  • 事務(wù)2檢測(cè)到?jīng)_突,獲取X|NK鎖,被事務(wù)1阻塞
  • 事務(wù)1檢測(cè)到?jīng)_突,申請(qǐng)獲取S|NK,被事務(wù)2阻塞
事務(wù)1事務(wù)2LOCK_X LOCK_NOT_GAP--LOCK_X-LOCK_NEXT_KEY 阻塞LOCK_S-LOCK_NEXT_KEY死鎖回滾

所以在等待執(zhí)行期間sql會(huì)有死鎖報(bào)錯(cuò),高并發(fā)環(huán)境下的死鎖也就出現(xiàn)了,再事務(wù)執(zhí)行完成回滾操作以后,死鎖回滾,也就解釋了死鎖消失的問(wèn)題。

3.解決方案:

經(jīng)過(guò)多方討論,最終決定使用 insetr + ON DUPLICATE KEY UPDATE語(yǔ)句替換高并發(fā)環(huán)境下的Replace Into語(yǔ)句解決死鎖問(wèn)題。

ON DUPLICATE KEY UPDATE語(yǔ)句的作用是:

若該數(shù)據(jù)的主鍵值/ UNIQUE KEY 已經(jīng)在表中存在,則執(zhí)行更新操作, 即UPDATE 后面的操作。

否則插入一條新的記錄。

實(shí)現(xiàn)了Replace Into有相同的查重替換功能,而避免了高并發(fā)的死鎖問(wèn)題。

但是UPDATE操作性能相比DELETE操作會(huì)有一定的性能上的影響,需要后續(xù)測(cè)試跟進(jìn)。

到此這篇關(guān)于高并發(fā)狀態(tài)下Replace Into造成的死鎖問(wèn)題解決的文章就介紹到這了,更多相關(guān)Replace Into死鎖內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MySQL
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆mv在线观看| 亚洲在线观看| 蜜芽一区二区三区| 亚洲精品小说| 亚洲午夜在线| 亚洲涩涩在线| 中文字幕色婷婷在线视频| 成午夜精品一区二区三区软件| 国产精品丝袜在线播放| 久久精品 人人爱| 91成人福利| 国产欧美在线| 国产精品超碰| 日韩va欧美va亚洲va久久| 日韩不卡一二三区| 国产精品分类| 精品福利久久久| 成人午夜网址| 久久青草久久| 在线视频亚洲| 蜜臀国产一区二区三区在线播放| 石原莉奈在线亚洲二区| 亚洲乱码一区| 国产视频一区二| 久久精品一本| 日韩精品永久网址| 精品一区亚洲| 免费视频一区二区| 蜜臀av一区二区三区| 日韩av中文在线观看| 国产精品22p| 成人午夜在线| 久久精品在线| 亚洲色图综合| 国产精品theporn| 亚洲一级少妇| 中日韩男男gay无套| 日韩精品一区二区三区免费视频| 国产精品嫩模av在线| 日本午夜大片a在线观看| 欧美粗暴jizz性欧美20| 影院欧美亚洲| 91精品国产自产在线丝袜啪| 国产精品地址| 99国产精品一区二区| 亚洲一区二区日韩| 久久99久久久精品欧美| 日本精品影院| 亚洲五月综合| 欧美亚洲三区| 青青青免费在线视频| 久久亚洲影院| 国产精品一在线观看| 日韩欧美一区二区三区在线观看| 亚洲欧美日韩综合国产aⅴ| 欧美综合精品| 在线看片福利| 美女黄网久久| 人人精品久久| 激情国产在线| 色8久久久久| 精品国产aⅴ| 偷拍欧美精品| 国产精品tv| 日韩视频不卡| 老色鬼精品视频在线观看播放| 欧美日韩水蜜桃| 欧美日韩夜夜| 91高清一区| 国产精品伊人| 在线观看免费一区二区| 欧美激情aⅴ一区二区三区| 亚洲欧洲另类| 国产精品99久久免费| 红桃视频亚洲| 麻豆中文一区二区| 夜夜嗨网站十八久久| 精品久久美女| 亚洲欧洲日韩| 久久青草久久| 国产精品久久乐| 水野朝阳av一区二区三区| 精品一区91| 亚洲tv在线| 久久高清精品| 久久免费精品| 中文字幕一区二区三区在线视频| 亚洲黄色网址| 亚洲精品少妇| 亚洲国产综合在线看不卡| 久久爱www.| 在线精品亚洲| 激情六月综合| 久久久久久婷| 国产欧美日韩一区二区三区四区 | 国产在线欧美| 麻豆久久久久久久| 亚洲精品九九| 九一成人免费视频| 精品网站aaa| 欧美日韩国产一区二区在线观看| 欧美日韩国产一区二区三区不卡| 欧美片第1页综合| 狠狠久久婷婷| 日韩三区免费| 精品国产午夜肉伦伦影院| 欧美午夜网站| 免费观看久久久4p| 亚洲午夜视频| 欧美日韩精品免费观看视完整| 青青草国产成人99久久| 丝袜脚交一区二区| 黄色成人91| 久久久精品午夜少妇| 欧美国产小视频| 国产精品中文字幕制服诱惑| 日韩一级网站| 激情国产在线| 精品成人18| 精品一区二区三区视频在线播放| 国产图片一区| 欧美日韩中出| 欧美一级二级三级视频| 久久电影一区| 国产精品婷婷| 欧美日韩国产一区精品一区| 国产综合精品| 久久国产免费| 香蕉久久精品| 久久婷婷久久| 999精品一区| 亚洲手机在线| 欧美天堂视频| 欧美二三四区| 亚洲va中文在线播放免费| 久久久久久自在自线| 国产乱码午夜在线视频| 岛国av免费在线观看| 中文字幕在线高清| 天堂中文在线播放| 天堂av在线| 九色精品91| 中文日韩在线| 天海翼亚洲一区二区三区| 国产日韩欧美一区在线| 国产精品一级在线观看| 国产精品亚洲片在线播放| 国产精品最新| 美腿丝袜亚洲三区| 欧美精品aa| 国产精品精品国产一区二区| 伊人久久国产| 激情综合亚洲| 久久高清免费观看| 亚洲精品在线国产| 国产情侣久久| 国产成人1区| 国产麻豆久久| 欧美日韩国产亚洲一区| 亚洲人亚洲人色久| 国产日韩视频| 国内不卡的一区二区三区中文字幕| 丰满少妇一区| 亚洲成av在线| 一区二区三区网站| 国产精品日本一区二区不卡视频 | 欧美在线日韩| 欧美天堂视频| 黄色亚洲大片免费在线观看| 亚洲精品激情| 国产精品视频一区视频二区| 国产一区二区亚洲| 成人在线网站| 亚洲另类av| 麻豆视频一区| 久久视频一区| 日韩精品一区二区三区免费视频| 麻豆精品av| 激情综合自拍| 欧美一级网站| 成人美女视频| 先锋亚洲精品| 国产精品.xx视频.xxtv| 激情亚洲影院在线观看| 老色鬼久久亚洲一区二区| 日韩成人午夜精品| 免费看av不卡| 中文字幕一区二区三区日韩精品 | 日韩精品电影一区亚洲| 精品国产亚洲一区二区三区在线 | 亚洲二区在线| 蜜桃视频在线观看一区二区| 久久爱www成人| 免费欧美一区| 久久激情av| 欧美不卡视频| 国产精品扒开腿做爽爽爽软件| 欧美成人午夜| 国产日韩欧美一区| 99xxxx成人网|