成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

高并發狀態下Replace Into造成的死鎖問題解決

瀏覽:217日期:2023-02-18 16:43:25
目錄
  • 1.問題出現:
  • 2.分析解決
  • 3.解決方案:

1.問題出現:

在測試階段,大數據并發的情況下,發現sql語句造成表的死鎖,過一段時間,死鎖消失。于是進行排查

報錯如下:

對應的sql語句如下:

    @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);

在排除了數據問題和線程重復調用以后,我們關注了一下sql語句本身。 看了網上很多經驗分享,覺得問題可能出現在 Replace Into 語句上。

2.分析解決

首先我們分析一下為什么并發replace into導致MySQL死鎖

Replace into 一般作用是,當存在沖突時,會把舊記錄替換成新的記錄。也就是說這條語句執行,分為了兩個大步:判斷和執行

1.判斷:

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

2.操作:

  • 針對不存在的記錄,語句會執行insert,插入操作。
  • 針對已經存在的記錄,語句可以拆分為delete+insert操作

測試:

建立表

插入數據:

我們使用replace into語句去執行一個已經存在的數據:

可以清楚的發現,影響的行數是兩行

第一行的數據被修改了

我們使用replace into語句去執行一個不存在的數據:

可以清楚的發現,影響的行數是一行

執行了插入操作:

邏輯非常的清晰,但是這種單條sql語句在什么情況下會出現死鎖呢?我們就要去考慮這個加鎖的時機。

正常的插入邏輯是:

  • 首先插入聚集索引記錄,在上例中id列為自增列。
  • 隨后插入二級索引num,由于其是唯一索引,在檢查duplicate key時,為其加上類型為LOCK_X的記錄鎖。

發現錯誤:

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

轉換模式:

如果發生uk沖突的索引是最后一個唯一索引、沒有外鍵引用、且不存在delete trigger時,使用UPDATE ROW的方式來解決沖突;
否則,使用DELETE ROW + INSERT ROW的方式解決沖突。

更新記錄:

  • 對于聚集索引,由于PK列發生變化,采用delete + insert 聚集索引記錄的方式更新。
  • 對于二級uk索引,同樣采用標記刪除 + 插入的方式。

所以死鎖的問題多半就會出現在X記錄鎖上面。

死鎖分析:

所以再多線程高并發的環境狀態下,存在兩個事務同時去獲取一個記錄的修改的情況:

  • 事務1拿到X記錄鎖,
  • 事務2檢測到沖突,獲取X|NK鎖,被事務1阻塞
  • 事務1檢測到沖突,申請獲取S|NK,被事務2阻塞
事務1事務2LOCK_X LOCK_NOT_GAP--LOCK_X-LOCK_NEXT_KEY 阻塞LOCK_S-LOCK_NEXT_KEY死鎖回滾

所以在等待執行期間sql會有死鎖報錯,高并發環境下的死鎖也就出現了,再事務執行完成回滾操作以后,死鎖回滾,也就解釋了死鎖消失的問題。

3.解決方案:

經過多方討論,最終決定使用 insetr + ON DUPLICATE KEY UPDATE語句替換高并發環境下的Replace Into語句解決死鎖問題。

ON DUPLICATE KEY UPDATE語句的作用是:

若該數據的主鍵值/ UNIQUE KEY 已經在表中存在,則執行更新操作, 即UPDATE 后面的操作。

否則插入一條新的記錄。

實現了Replace Into有相同的查重替換功能,而避免了高并發的死鎖問題。

但是UPDATE操作性能相比DELETE操作會有一定的性能上的影響,需要后續測試跟進。

到此這篇關于高并發狀態下Replace Into造成的死鎖問題解決的文章就介紹到這了,更多相關Replace Into死鎖內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MySQL
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国内欧美视频一区二区 | 91色porny蝌蚪| 久久岛国电影| 亚洲视频一二三区| av在线播放成人| 在线不卡欧美精品一区二区三区| 午夜视频在线观看一区二区| 激情丁香综合| 久久久国产精品麻豆| 国产大陆a不卡| 国产精品主播直播| 欧美午夜一区二区三区 | 欧美亚洲一区三区| 午夜伦理一区二区| 国产一区成人| 亚洲黄色小说网站| 伊人久久综合| 欧美激情中文不卡| 91亚洲国产成人精品一区二区三 | 亚洲精品一线二线三线| 韩日欧美一区二区三区| 欧美日韩一区二区在线观看| 免费看黄色91| 在线观看精品一区| 日韩经典一区二区| 久久久综合香蕉尹人综合网| 亚洲成人自拍一区| 麻豆9191精品国产| 日韩影院在线观看| 美女亚洲精品| 日韩精品一级二级| 欧美亚洲综合色| 国产一区二区免费在线| 欧美日韩国产精品自在自线| 韩国av一区二区三区| 欧美久久久久久久久中文字幕| 精品一区二区国语对白| 69久久99精品久久久久婷婷 | 中文字幕精品在线不卡| 欧美日韩伊人| 亚洲天堂免费看| 亚洲色诱最新| 婷婷国产在线综合| 在线亚洲免费视频| 久久国产精品99精品国产| 欧美日韩一区成人| 粉嫩13p一区二区三区| 91精品国产色综合久久久蜜香臀| 国产一区二区美女诱惑| 日韩精品一区在线观看| 国产日韩欧美高清免费| 国产精品三级电影| 亚洲精品1区2区| 欧美大片在线观看一区| voyeur盗摄精品| 国产精品丝袜91| 亚洲电影在线| 亚洲超丰满肉感bbw| 色香蕉成人二区免费| 久久99精品久久只有精品| 欧美一区二区播放| 欧美 日韩 国产精品免费观看| 欧美国产综合色视频| 91在线无精精品入口| 国产精品美女视频| 久久aⅴ国产紧身牛仔裤| 奇米影视在线99精品| 91精品婷婷国产综合久久竹菊| 国产成人精品影视| 国产偷国产偷亚洲高清人白洁| 一区在线播放| 日韩中文字幕1| 欧美一级搡bbbb搡bbbb| 欧美在线首页| 亚洲午夜电影在线| 欧美男同性恋视频网站| 99精品视频中文字幕| 综合在线观看色| 免费日韩av片| 国产传媒一区在线| 国产精品电影院| 久久久亚洲一区| 成人av手机在线观看| 亚洲欧美一区二区三区久本道91 | 日韩视频精品| 激情综合一区二区三区| 国产欧美日韩综合| 每日更新成人在线视频| 国产精品一卡二| 中文字幕在线不卡一区二区三区| 久久天堂精品| 成人av在线电影| 中文字幕亚洲综合久久菠萝蜜| 色天使久久综合网天天| 成人免费高清在线| 亚洲色图视频网| 欧美日韩国产色站一区二区三区| 女女同性女同一区二区三区91| 亚洲一区二区成人在线观看| 91精品国产综合久久精品性色| 韩国久久久久| 精品一区二区综合| 国产精品国产a| 欧美中文字幕一区二区三区| 99国产精品一区| 性做久久久久久久久| 欧美videos大乳护士334| 国产精品毛片| 精品写真视频在线观看| 国产精品久久久99| 欧美日韩小视频| 亚洲国产成人不卡| 国产成人免费xxxxxxxx| 亚洲精品日韩一| 欧美电影免费观看高清完整版在线 | 国产亚洲激情| 国产一区在线不卡| 亚洲女人小视频在线观看| 欧美一区二区三区在线看| 亚洲高清激情| 国产69精品久久久久777| 亚洲一区av在线| 国产欧美综合在线| 欧美日韩一区二区三区高清| 亚洲人妖在线| 99久久99久久综合| 蜜桃精品在线观看| 亚洲欧美日韩久久| 欧美电影精品一区二区 | 国产三级久久久| 欧美日韩专区在线| 一区二区冒白浆视频| av一区二区三区四区| 日韩av午夜在线观看| 中文字幕在线播放不卡一区| 4hu四虎永久在线影院成人| 亚洲欧美久久久| 欧美日韩大片一区二区三区| 国产精品亚洲视频| 日韩精品高清不卡| 亚洲欧美电影一区二区| 26uuu亚洲| 91精品国产色综合久久ai换脸| 亚洲欧美精品| 亚洲理论在线| 91在线观看美女| 国产伦精品一区二区三区免费迷 | 国产乱人伦精品一区二区在线观看 | 国产精品一区三区| 日韩主播视频在线| 一区二区三区免费观看| 欧美激情一区二区三区蜜桃视频| 日韩一区二区三区观看| 欧洲生活片亚洲生活在线观看| 亚洲精品视频一区二区三区| 欧美一区二区| 成人免费av在线| 国产毛片精品一区| 久久成人免费电影| 日本伊人色综合网| 一区二区三区高清不卡| 亚洲欧洲日韩在线| 国产精品网站在线播放| 精品剧情v国产在线观看在线| 欧美日韩精品一二三区| 91福利国产成人精品照片| 亚洲一区日韩在线| 亚洲乱码视频| 欧美视频亚洲视频| 99天天综合性| 国产69精品久久777的优势| 国产剧情一区二区| 久久国产乱子精品免费女| 日本不卡一区二区| 一个色在线综合| 亚洲乱码精品一二三四区日韩在线| 日本一区二区在线不卡| 久久综合久色欧美综合狠狠| 日韩欧美一区二区免费| 欧美久久久久中文字幕| 91国偷自产一区二区三区观看| 麻豆av福利av久久av| 免费精品视频| 乱码第一页成人| 香蕉久久夜色| 久久精品网址| 久久三级视频| 色视频成人在线观看免| 在线观看视频一区二区| 欧洲精品在线观看| 91黄色免费观看| 欧美午夜一区二区三区免费大片| 欧美日韩国产电影| 日韩三级.com| 精品福利在线导航| 国产情人综合久久777777| 最好看的中文字幕久久| 一区二区三区精品在线| 天堂资源在线中文精品| 日韩影院精彩在线|