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

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

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

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

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

在測試階段,大數(shù)據并發(fā)的情況下,發(fā)現(xiàn)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);

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

2.分析解決

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

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

1.判斷:

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

2.操作:

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

測試:

建立表

插入數(shù)據:

我們使用replace into語句去執(zhí)行一個已經存在的數(shù)據:

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

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

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

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

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

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

正常的插入邏輯是:

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

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

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

轉換模式:

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

更新記錄:

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

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

死鎖分析:

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

  • 事務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死鎖回滾

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

3.解決方案:

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

ON DUPLICATE KEY UPDATE語句的作用是:

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

否則插入一條新的記錄。

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

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

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

標簽: MySQL
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品theporn| 国产九九精品| 久久久天天操| 性欧美videohd高精| 日韩欧美一区免费| 久久裸体视频| 午夜精品婷婷| 鲁大师影院一区二区三区| 久久国产精品毛片| 男女激情视频一区| 日韩精品视频网站| 免费亚洲一区| 日本免费久久| 亚洲国产成人精品女人| 日本欧洲一区二区| 亚洲精品第一| 日韩激情中文字幕| 久久的色偷偷| 亚洲精品国产嫩草在线观看| 女人av一区| 亚洲精品激情| 久久久精品区| 亚洲精品欧美| 亚洲女同中文字幕| 91麻豆精品激情在线观看最新| 日韩福利在线观看| 国产精品片aa在线观看| 另类综合日韩欧美亚洲| 日韩成人三级| 精品在线91| 久久亚洲影院| 国产日韩免费| 蜜桃成人精品| 亚洲三级毛片| 国产成人1区| 国产亚洲福利| 久久这里只有| 国产模特精品视频久久久久| 欧美亚洲tv| 精精国产xxxx视频在线野外| 亚洲三级av| 黑森林国产精品av| 丝袜美腿亚洲一区二区图片| 麻豆精品新av中文字幕| 国产在线欧美| 日韩三级视频| 日韩欧美精品一区| 日本不卡一区二区三区| 日产精品一区二区| 一区二区国产在线观看| 欧美好骚综合网| 男人的天堂久久精品| 精品91福利视频| 噜噜噜躁狠狠躁狠狠精品视频| 美女久久久精品| 欧美特黄一区| 激情不卡一区二区三区视频在线| 中文日韩欧美| 国产aa精品| 日韩精品久久理论片| 三级精品视频| 日韩av中文字幕一区二区| 极品日韩av| 久久精品国产99| 亚洲字幕久久| 欧美+日本+国产+在线a∨观看| 国产精品一区二区免费福利视频| 国产综合精品一区| 精品一区二区三区的国产在线观看| 爽好多水快深点欧美视频| 国产不卡精品在线| 欧美性www| 亚洲中午字幕| 亚洲va中文在线播放免费| 日韩国产欧美在线播放| 国产韩日影视精品| 麻豆精品在线| 日本精品另类| 午夜亚洲福利在线老司机| 国产一区2区| 欧美日韩va| 视频一区在线播放| 久久一区二区三区喷水| 精品视频一区二区三区四区五区| 天海翼亚洲一区二区三区| 国产综合亚洲精品一区二| 九九99久久精品在免费线bt| 蜜桃一区二区三区在线观看| 91精品久久久久久久久久不卡| 国产精品va视频| 日韩精彩视频在线观看| 欧美日韩视频| av高清一区| 精品72久久久久中文字幕| 日韩高清欧美激情| 鲁大师影院一区二区三区| 欧美性感美女一区二区| 国产一区二区三区探花| 国产精品成人一区二区网站软件| 亚洲v天堂v手机在线| 久久国产精品99国产| 精品一区在线| 久久狠狠婷婷| 成人羞羞视频播放网站| 97精品一区| 国产精品黑丝在线播放| 国产欧美三级| 国产视频一区二| 欧美一区精品| 欧美亚洲tv| 国产日韩在线观看视频| 欧美偷窥清纯综合图区| 欧美一区网站| 国产日韩欧美一区在线| 国产精品一区二区三区美女 | 国产精品成人国产| 欧美亚洲色图校园春色| 日本午夜精品久久久久| 欧美一区不卡| 国产精品最新| 国产高清亚洲| 丁香婷婷久久| 桃色一区二区| 国产伊人精品| 久久成人亚洲| 亚洲18在线| 国产精品最新| 欧美国产小视频| 午夜精品久久久久久久久久蜜桃| 亚洲综合电影| 欧美日韩在线二区| 在线 亚洲欧美在线综合一区| 国产精品日韩| 日本精品国产| 六月丁香综合在线视频| 国产videos久久| 999久久久国产精品| 悠悠资源网久久精品| 亚洲深深色噜噜狠狠爱网站| 欧美一区网站| a国产在线视频| 久久久久久黄| 亚洲激精日韩激精欧美精品| 日韩在线一二三区| 日本亚州欧洲精品不卡| 日韩精品久久久久久| 美腿丝袜亚洲一区| 日韩国产欧美一区二区| 91精品1区| 日韩不卡免费视频| 福利片在线一区二区| 1000部精品久久久久久久久| 日韩在线播放一区二区| 国产亚洲观看| 日本午夜大片a在线观看| 偷拍欧美精品| 婷婷综合电影| 国产一区二区精品久| 激情综合网站| 视频精品一区| 精品久久福利| 国产视频一区免费看| 国产欧美日韩精品一区二区三区| www.51av欧美视频| 三级一区在线视频先锋| 美腿丝袜在线亚洲一区| 激情欧美一区| 91精品国产自产在线丝袜啪| 高清一区二区| 首页欧美精品中文字幕| 麻豆视频久久| 亚洲午夜精品久久久久久app| 亚洲va久久久噜噜噜久久| 国产成人精品福利| 人人精品人人爱| 欧美激情三区| 亚洲精品成人| 老鸭窝一区二区久久精品| 99在线|亚洲一区二区| 美女性感视频久久| 久久亚洲一区| 水蜜桃久久夜色精品一区| 国产亚洲激情| 精品三级国产| 免费在线观看成人| 国产videos久久| 四虎精品一区二区免费| 欧美香蕉视频| 国产欧美一区二区三区米奇| 亚洲一级高清| 国产精品一区二区三区美女| 一区二区视频欧美| 精品精品久久| 亚洲日本三级| 日产精品一区| 国产日韩欧美一区二区三区 | 蜜桃伊人久久| 色婷婷综合网| 日韩精品免费视频人成| 久久精品免费一区二区三区 |