婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL DeadLock故障排查全過程記錄

MySQL DeadLock故障排查全過程記錄

熱門標簽:溫州瑞安400電話怎么申請 俄國地圖標注app 百度地圖標注后不顯示 電銷機器人各個細節介紹 淄博400電話申請 昆明電信400電話辦理 電銷機器人 行業 南昌高頻外呼系統哪家公司做的好 電話機器人市場趨勢

【作者】

劉博:攜程技術保障中心數據庫高級經理,主要關注Sql server和Mysql的運維和故障處理。

【環境】

版本號:5.6.21

隔離級別:REPEATABLE READ

【問題描述】

接到監控報警,有一個線上的應用DeadLock報錯,每15分鐘會準時出現,報錯統計如下圖:


登錄Mysql服務器查看日志:

mysql> show engine innodb status\G

*** (1) TRANSACTION:

TRANSACTION 102973, ACTIVE 11 sec starting index read

mysql tables in use 3, locked 3

LOCK WAIT 4 lock struct(s), heap size 1136, 3 row lock(s)

MySQL thread id 6, OS thread handle 140024996574976, query id 83 localhost us updating

UPDATE TestTable

SET column1 = 1,

Column2 = sysdate(),

Column3= '026'

Column4 = 0

AND column5 = 485

AND column6 = 'SEK'

*** (1) WAITING FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 417 page no 1493 n bits 1000 index idx_column6 of table test.TestTable trx id 102973 lock_mode X waiting

Record lock, heap no 859 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

0: len 3; hex 53454b; asc SEK;;

1: len 8; hex 80000000007e1452; asc ~ R;;

*** (2) TRANSACTION:

TRANSACTION 102972, ACTIVE 26 sec starting index read

mysql tables in use 3, locked 3

219 lock struct(s), heap size 24784, 2906 row lock(s), undo log entries 7

MySQL thread id 5, OS thread handle 140024996841216, query id 84 localhost us updating

UPDATE TestTable

SET Column1 = 1,

Column2 = sysdate(),

Column3 = '026'

Column4 = 0

AND Column5 = 485

AND Column6 = 'SEK'

*** (2) HOLDS THE LOCK(S):

RECORD LOCKS space id 417 page no 1493 n bits 1000 index idx_Column6 of table test.TestTable trx id 102972 lock_mode X

Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0

0: len 8; hex 73757072656d756d; asc supremum;;


Record lock, heap no 859 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

0: len 3; hex 53454b; asc SEK;;

1: len 8; hex 80000000007e1452; asc ~ R;;
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 601 page no 89642 n bits 1000 index idx_column6 of table test.TestTable trx id 32231892482 lock_mode X locks rec but not gap waiting

Record lock, heap no 38 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

0: len 3; hex 53454b; asc SEK;;

1: len 8; hex 80000000007eea14; asc ~ ;;

大致一看,更新同一索引的同一行,應該是一個Block,報TimeOut的錯才對,怎么會報DeadLock?

【初步分析】

先分析下(2) TRANSACTION,TRANSACTION 32231892482。

等待的鎖信息為:

0: len 3; hex 53454b; asc SEK;;

1: len 8; hex 80000000007eea14; asc

持有的鎖信息為:

0: len 3; hex 53454b; asc SEK;;

1: len 8; hex 80000000007eeac4; asc

再先分析下(1) TRANSACTION,TRANSACTION 32231892617。

等待的鎖信息為:

0: len 3; hex 53454b; asc SEK;;

1: len 8; hex 80000000007eeac4; asc

于是可以畫出的死鎖表,兩個資源相互依賴,造成死鎖:

TRANSACTION Hold Wait
32231892617 53454b\80000000007eea14 53454b\80000000007eeac4
32231892482 53454b\80000000007eeac4 53454b\80000000007eea14

讓我們再看一下explain結果:

mysql>desc UPDATE TestTable SET Column1=1, Column2 = sysdate(),Column3 = '025' Column4 = 0 AND Column5 = 477 AND Column6 = 'SEK' \G;

*************************** 1. row ***************************

id: 1

select_type: UPDATE

table: TestTable

partitions: NULL

type: index_merge

possible_keys: column5_index,idx_column5_column6_Column1,idxColumn6

key: column5_index,idxColumn6

key_len: 8,9

ref: NULL

rows: 7

filtered: 100.00

Extra: Using intersect(column5_index,idxColumn6); Using where

可以看到 EXTRA 列:

Using intersect(column5_index,idxColumn6)

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

相關文檔: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.

【模擬與驗證】

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

時間序列 Session1 Session2
1 Begin;
2 UPDATE TestTable SET Column2 = sysdate() Column4 = 0 AND Column5 = 47 AND Column6 = 'SEK 
執行成功,影響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';
執行成功
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

依據以上信息可以發現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的鎖,至此思路已經清晰,對整個分配鎖的信息簡化一下,如下表格(請求到的鎖用青色表示,需獲取但未獲取到的鎖用紅色表示):

時間點 Session1 Session2
1 477 SEK
2 485 SEK
3 485 SEK 死鎖發生

可以看到485 SEK這兩個資源形成了一個環狀,最終發生死鎖。

【解決方法】

  • 最佳的方法是添加column5和Column6的聯合索引。
  • 我們環境當時的情況發現Column6的篩選度非常低,就刪除了Column6的索引。
    10:55左右刪除索引后,報錯沒有再發生:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • mysql報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法
  • 線上MYSQL同步報錯故障處理方法總結(必看篇)
  • MYSQL主從庫不同步故障一例解決方法
  • 一次MySQL慢查詢導致的故障
  • MySQL下高可用故障轉移方案MHA的超級部署教程
  • MySQL復制的概述、安裝、故障、技巧、工具(火丁分享)
  • 檢測MySQL的表的故障的方法

標簽:葫蘆島 吐魯番 甘南 安徽 海口 嘉峪關 拉薩 洛陽

巨人網絡通訊聲明:本文標題《MySQL DeadLock故障排查全過程記錄》,本文關鍵詞  MySQL,DeadLock,故障,排查,全過程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL DeadLock故障排查全過程記錄》相關的同類信息!
  • 本頁收集關于MySQL DeadLock故障排查全過程記錄的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    夜夜嗨av一区二区三区网页| 日本道精品一区二区三区| 一区二区欧美国产| 亚洲日本电影在线| 久久国产精品99精品国产| 国产精品一区二区在线看| 婷婷一区二区三区| 成人sese在线| 欧美无乱码久久久免费午夜一区 | 久久av中文字幕片| 欧美日韩国产综合一区二区三区| 欧美激情在线一区二区| 日韩成人av影视| 成人久久视频在线观看| 久久久久久一级片| 久久99热这里只有精品| 欧美一区永久视频免费观看| 一区二区三区在线影院| 色综合久久88色综合天天| 中文字幕亚洲区| 91视频免费观看| 亚洲精品免费看| 97久久超碰国产精品| 国产精品久久久久久久久果冻传媒| 久久99热99| 久久久国际精品| 国产一区二区三区精品欧美日韩一区二区三区 | 激情成人综合网| 欧美精品一区二区精品网| 成人欧美一区二区三区在线播放| 成人深夜在线观看| 一卡二卡欧美日韩| 国产精品久久久久一区二区三区| 韩国三级在线一区| 久久久久久久国产精品影院| 1000精品久久久久久久久| 欧美综合一区二区| 国产毛片精品一区| 亚洲一区二区三区四区的| 综合精品久久久| 欧美成人福利视频| 欧美一区二区在线播放| 欧美视频一区二区三区在线观看| 97久久精品人人澡人人爽| 国产精品一级在线| 国产亚洲一区二区三区在线观看| 欧美四级电影在线观看| 一本色道久久综合精品竹菊| 成人18精品视频| 色综合天天天天做夜夜夜夜做| 国产电影一区在线| 99久久99久久精品免费看蜜桃 | 91精品国产欧美日韩| 欧美日韩高清影院| 日韩精品在线一区| 精品人在线二区三区| 亚洲精品一区在线观看| 国产色产综合产在线视频| 日本一区二区三区免费乱视频| 国产精品毛片大码女人| 亚洲少妇屁股交4| 亚洲国产综合在线| 日韩精品一区第一页| 九色|91porny| 成人18精品视频| 精品视频1区2区| 日韩欧美在线影院| 国产欧美一区二区三区在线看蜜臀 | 色噜噜狠狠成人中文综合 | 亚洲国产精品av| 国产精品毛片a∨一区二区三区| 日韩毛片在线免费观看| 亚洲一区二区在线免费观看视频| 天堂午夜影视日韩欧美一区二区| 免费看欧美女人艹b| 亚洲国产精品二十页| 一区二区高清免费观看影视大全| 日韩主播视频在线| aaa亚洲精品| 91精品国产高清一区二区三区| 欧美精品一级二级三级| 久久精品一区四区| 亚洲高清免费观看| 丁香六月综合激情| 在线这里只有精品| 日韩欧美激情一区| 亚洲人吸女人奶水| 亚洲va欧美va天堂v国产综合| 日本中文字幕一区| 91丝袜国产在线播放| 91精品欧美福利在线观看| 精品国内二区三区| 亚洲欧美经典视频| 久久久亚洲精华液精华液精华液| 亚洲国产精品一区二区尤物区| 国产精品88av| 欧美xfplay| 日韩 欧美一区二区三区| 91日韩在线专区| 国产女人水真多18毛片18精品视频| 午夜av一区二区| 日本久久一区二区三区| 亚洲国产精品成人综合色在线婷婷| 久久国产精品区| 欧美日韩亚洲综合在线| ...av二区三区久久精品| 国产麻豆视频一区二区| 日韩欧美国产三级电影视频| 亚洲一区二区偷拍精品| 不卡一区二区三区四区| 久久久久国产精品免费免费搜索| 欧美军同video69gay| 亚洲欧美激情视频在线观看一区二区三区| 久久成人久久爱| 日韩欧美一区二区不卡| 免费欧美在线视频| 日韩精品专区在线| 日本伊人色综合网| 日韩一级完整毛片| 久久成人免费日本黄色| 日韩一级大片在线观看| 日韩亚洲欧美一区| 蜜臀av一区二区三区| 91精品国产麻豆国产自产在线 | 亚洲成人精品在线观看| 欧美伊人久久大香线蕉综合69| 亚洲免费观看高清完整版在线观看| 粗大黑人巨茎大战欧美成人| 日韩欧美在线1卡| 蜜桃视频第一区免费观看| 91精品视频网| 亚洲va欧美va天堂v国产综合| 欧美一区二区在线观看| 亚洲一区二区三区自拍| 欧美视频一区二区三区四区| 日本vs亚洲vs韩国一区三区二区| 欧美sm极限捆绑bd| 成熟亚洲日本毛茸茸凸凹| **欧美大码日韩| 欧美日本在线一区| 精品亚洲国产成人av制服丝袜| 国产色91在线| 欧美调教femdomvk| 久久er99精品| 中文字幕一区日韩精品欧美| 色婷婷亚洲精品| 日本怡春院一区二区| 色av成人天堂桃色av| 高清不卡在线观看| 中文字幕乱码久久午夜不卡| www.激情成人| 一区二区三区精品在线观看| 97久久精品人人做人人爽| 亚洲女人****多毛耸耸8| 69堂国产成人免费视频| 久久精品国产精品亚洲综合| 中文字幕亚洲在| 国产永久精品大片wwwapp| 中文字幕一区二区不卡| 日韩午夜小视频| 色哟哟一区二区三区| 久久国产精品一区二区| 91成人国产精品| 精品人伦一区二区色婷婷| 成人免费看视频| 亚洲精品国产无套在线观| 欧美日韩精品专区| 日韩av中文字幕一区二区三区| 欧美一区二区三区在线看| 成人精品小蝌蚪| 精品一区二区免费在线观看| 国产午夜精品久久| 91精品国产黑色紧身裤美女| 一本色道久久综合狠狠躁的推荐| 精品一区二区三区久久久| 亚洲电影中文字幕在线观看| 日韩精品一区国产麻豆| 成人动漫一区二区| 国产一区美女在线| 亚洲一区av在线| 亚洲视频狠狠干| 国产日产欧美一区二区视频| 在线综合+亚洲+欧美中文字幕| 国产999精品久久| 久久精品噜噜噜成人av农村| 亚洲第一主播视频| 亚洲黄色录像片| 中文字幕综合网| 中文字幕av一区二区三区免费看| 欧美日韩国产在线观看| 91视频免费观看| 亚洲国产sm捆绑调教视频| 亚洲欧美一区二区久久| 中文字幕一区二区三区不卡| 国产精品美女一区二区三区| 久久久久97国产精华液好用吗| 欧美精品一区二区高清在线观看| 日韩一区二区麻豆国产| 欧美色涩在线第一页| 欧美丝袜丝交足nylons图片|