<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
        主站蜘蛛池模板: 无码一区二区三区免费视频| 5g影院5g天天爽永久免费影院| 免费视频淫片aa毛片| 亚洲精品国产电影午夜| 久9这里精品免费视频| 亚洲黄色免费在线观看| 亚洲电影免费观看| 2020国产精品亚洲综合网| 毛片免费观看网址| MM1313亚洲国产精品| 亚洲人成电影在线播放| 老司机精品免费视频| 亚洲无删减国产精品一区| 亚洲大片免费观看| 亚洲午夜精品一区二区麻豆| 日韩激情无码免费毛片| 一级毛片免费全部播放| 国产成人综合亚洲亚洲国产第一页| 少妇性饥渴无码A区免费| 亚洲精品在线免费观看视频| 无码高潮少妇毛多水多水免费| 日本亚洲中午字幕乱码| 国产亚洲成人久久| 67pao强力打造高清免费| 亚洲xxxx视频| 久久久久一级精品亚洲国产成人综合AV区 | 国产精品免费一级在线观看| 亚洲欧美第一成人网站7777| 好大好深好猛好爽视频免费| 免费精品视频在线| 亚洲AV无码国产丝袜在线观看| 亚洲人成免费网站| 色视频在线观看免费| 亚洲妇熟XXXX妇色黄| 好男人看视频免费2019中文| 免费无码一区二区| 亚洲无线一二三四区| 亚洲AV成人潮喷综合网| 97在线视频免费播放| 美女黄频视频大全免费的| 亚洲爱情岛论坛永久|