<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQLDeadLock故障排查全過程記錄

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 20:20:57
        文檔

        MySQLDeadLock故障排查全過程記錄

        MySQLDeadLock故障排查全過程記錄:【作者】 劉博:攜程技術保障中心數(shù)據(jù)庫高級經(jīng)理,主要關注Sql server和Mysql的運維和故障處理。 【環(huán)境】 版本號:5.6.21 隔離級別:REPEATABLE READ 【問題描述】 接到監(jiān)控報警,有一個線上的應用DeadLock報錯,每15分鐘會準時出現(xiàn),報錯統(tǒng)計如
        推薦度:
        導讀MySQLDeadLock故障排查全過程記錄:【作者】 劉博:攜程技術保障中心數(shù)據(jù)庫高級經(jīng)理,主要關注Sql server和Mysql的運維和故障處理。 【環(huán)境】 版本號:5.6.21 隔離級別:REPEATABLE READ 【問題描述】 接到監(jiān)控報警,有一個線上的應用DeadLock報錯,每15分鐘會準時出現(xiàn),報錯統(tǒng)計如

        可以看到 EXTRA 列:

        Using intersect(column5_index,idxColumn6)

        從5.1開始,引入了 index merge 優(yōu)化技術,對同一個表可以使用多個索引分別進行條件掃描。

        相關文檔:http://dev.mysql.com/doc/refman/5.7/en/index-merge-optimization.html

        The Index Merge method is used to retrieve rows with several range scans and to merge their results into one. The merge can produce unions, intersections, or unions-of-intersections of its underlying scans. This access method merges index scans from a single table; it does not merge scans across multiple tables.

        【模擬與驗證】

        根據(jù)以上初步分析,猜測應該就是intersect造成的,于是在測試環(huán)境模擬驗證,開啟2個session模擬死鎖:

        時間序列 Session1 Session2
        1 Begin;
        2 UPDATE TestTable SET Column2 = sysdate() Column4 = 0 AND Column5 = 47 AND Column6 = 'SEK 
        執(zhí)行成功,影響7行
        3 Begin;
        4 UPDATE TestTable SET Column2 = sysdate(),Column4 = 0 AND Column5 = 485 AND Column6 = 'SEK';
        被Blocking
        5 UPDATE TestTable SET Column2 = sysdate(),Column4 = 0 AND Column5 = 485 AND Column6 = 'SEK';
        執(zhí)行成功
        ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

        依據(jù)以上信息可以發(fā)現(xiàn)Session2雖然被Block了,但也獲取了一些Session1在時間序列5時所需資源的X鎖,可以再開啟一個查詢select count(Column5) from TestTable where Column5 = 485,設置SET TRANSACTION ISOLATION LEVEL SERIALIZABLE,去查詢Column5 = 485的行,觀察鎖等待的信息:
        mysql> SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id

        mysql> SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id \G;
        
        *************************** 1. row ***************************
        
        waiting_trx_id: 103006
        
        waiting_thread: 36
        
        waiting_query: UPDATE TestTable SET Column1 = 1, Column2 = sysdate(), Column3 = '026' Column4 = 0 AND Column5 = 485 AND Column6 = 'SEK'
        
        blocking_trx_id: 103003
        
        blocking_thread: 37
        
        blocking_query: NULL
        
        *************************** 2. row ***************************
        
        waiting_trx_id: 421500433538672
        
        waiting_thread: 39
        
        waiting_query: select count(Column5) from TestTable where Column5 = 485
        
        blocking_trx_id: 103006
        
        blocking_thread: 36
        
        blocking_query: UPDATE TestTable SET Column1 = 1, Column2 = sysdate(), Column3 = '026' Column4 = 0 AND Column5 = 485 AND Column6 = 'SEK'
        
        2 rows in set, 1 warning (0.00 sec)
        
        mysql> select * from information_schema.innodb_lock_waits \G;
        
        *************************** 1. row ***************************
        
        requesting_trx_id: 103006
        
        requested_lock_id: 103006:417:1493:859
        
        blocking_trx_id: 103003
        
        blocking_lock_id: 103003:417:1493:859
        
        *************************** 2. row ***************************
        
        requesting_trx_id: 421500433538672
        
        requested_lock_id: 421500433538672:417:749:2
        
        blocking_trx_id: 103006
        
        blocking_lock_id: 103006:417:749:2
        
        2 rows in set, 1 warning (0.00 sec)
        mysql> select * from INNODB_LOCKS \G;
        
        *************************** 1. row ***************************
        
        lock_id: 103006:417:1493:859
        
        lock_trx_id: 103006
        
        lock_mode: X
        
        lock_type: RECORD
        
        lock_table: test.TestTable
        
        lock_index: idxColumn6
        
        lock_space: 417
        
        lock_page: 1493
        
        lock_rec: 859
        
        lock_data: 'SEK', 8262738
        
        *************************** 2. row ***************************
        
        lock_id: 103003:417:1493:859
        
        lock_trx_id: 103003
        
        lock_mode: X
        
        lock_type: RECORD
        
        lock_table:test.TestTable
        
        lock_index: idxColumn6
        
        lock_space: 417
        
        lock_page: 1493
        
        lock_rec: 859
        
        lock_data: 'SEK', 8262738
        
        *************************** 3. row ***************************
        
        lock_id: 421500433538672:417:749:2
        
        lock_trx_id: 421500433538672
        
        lock_mode: S
        
        lock_type: RECORD
        
        lock_table: test.TestTable
        
        lock_index: column5_index
        
        lock_space: 417
        
        lock_page: 749
        
        lock_rec: 2
        
        lock_data: 485, 8317620
        
        *************************** 4. row ***************************
        
        lock_id: 103006:417:749:2
        
        lock_trx_id: 103006
        
        lock_mode: X
        
        lock_type: RECORD
        
        lock_table: test.TestTable
        
        lock_index: column5_index
        
        lock_space: 417
        
        lock_page: 749
        
        lock_rec: 2
        
        lock_data: 485, 8317620
        
        4 rows in set, 1 warning (0.00 sec)

        可以看到Session2,trx_id 103006阻塞了trx_id 421500433538672,而trx_id 421500433538672 requested_lock也正好是lock_data: 485, 8317620。由此可見Session2雖然別block了,但是還是獲取到了Index column5_index相關的鎖。被Block是因為intersect的原因,還需要idxColumn6的鎖,至此思路已經(jīng)清晰,對整個分配鎖的信息簡化一下,如下表格(請求到的鎖用青色表示,需獲取但未獲取到的鎖用紅色表示):

        時間點 Session1 Session2
        1 477 SEK
        2 485 SEK
        3 485 SEK 死鎖發(fā)生

        可以看到485 SEK這兩個資源形成了一個環(huán)狀,最終發(fā)生死鎖。

        【解決方法】

      1. 最佳的方法是添加column5和Column6的聯(lián)合索引。
      2. 我們環(huán)境當時的情況發(fā)現(xiàn)Column6的篩選度非常低,就刪除了Column6的索引。
        10:55左右刪除索引后,報錯沒有再發(fā)生:
      3. 總結

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQLDeadLock故障排查全過程記錄

        MySQLDeadLock故障排查全過程記錄:【作者】 劉博:攜程技術保障中心數(shù)據(jù)庫高級經(jīng)理,主要關注Sql server和Mysql的運維和故障處理。 【環(huán)境】 版本號:5.6.21 隔離級別:REPEATABLE READ 【問題描述】 接到監(jiān)控報警,有一個線上的應用DeadLock報錯,每15分鐘會準時出現(xiàn),報錯統(tǒng)計如
        推薦度:
        標簽: 問題 全過程 mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 一级毛片免费一级直接观看| 日本高清高色视频免费| 91精品国产免费久久久久久青草| 最近中文字幕免费mv在线视频| 亚洲av无码专区国产乱码在线观看| 中国一级毛片视频免费看| 亚洲精品视频免费看| 亚洲日本在线观看网址| 国产精品亚洲精品久久精品 | 久久免费视频精品| 日本亚洲视频在线| 亚洲AV永久无码精品放毛片| 女人18毛片特级一级免费视频| 国产区图片区小说区亚洲区| 国产精品亚洲mnbav网站| 久久精品国产免费| 日本中文一区二区三区亚洲| 永久免费无码日韩视频| 国精无码欧精品亚洲一区| 女人体1963午夜免费视频| 亚洲欧洲在线观看| 97性无码区免费| 亚洲成AV人影片在线观看| 亚洲不卡AV影片在线播放| 久久亚洲精品国产亚洲老地址| 怡红院免费全部视频在线视频| 亚洲精品成人网站在线观看 | 久久久影院亚洲精品| 一级中文字幕免费乱码专区| 亚洲人成伊人成综合网久久久| 色九月亚洲综合网| 亚洲综合在线另类色区奇米| 3344免费播放观看视频| 亚洲AV无码国产剧情| 亚洲va久久久噜噜噜久久| 黄瓜视频影院在线观看免费| 丰满少妇作爱视频免费观看| 亚洲欧洲日产国码久在线观看| 国产高清免费在线| 无码精品人妻一区二区三区免费看| 亚洲日韩国产精品乱|