欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 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故障排查全過程記錄的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    亚洲资源中文字幕| 国产精品偷伦视频免费观看了| 三上悠亚ssⅰn939无码播放| 欧美无砖砖区免费| 伊人一区二区三区| 91在线无精精品入口| 色欧美片视频在线观看| 亚洲色大成网站www久久九九| 粉嫩欧美一区二区三区高清影视| 91香蕉视频污在线观看| 国产色综合一区| 国产福利一区二区三区| 国产传媒免费在线观看| 国产精品国产三级国产aⅴ中文| 丁香婷婷综合五月| 日本aⅴ在线观看| 亚洲图片另类小说| av电影在线观看一区| 日本韩国一区二区三区视频| 一区二区三区中文在线观看| 欧美xxxx日本和非洲| 在线不卡a资源高清| 日韩中文字幕不卡| 亚洲精品视频大全| 久久久99免费| 豆国产96在线|亚洲| 在线免费观看日本一区| 亚洲一区二区三区四区在线观看 | 人妻无码一区二区三区| 日韩女同互慰一区二区| 精品写真视频在线观看| 99久久精品久久亚洲精品| 国产精品久久久久久亚洲伦| 91小宝寻花一区二区三区| 欧美另类久久久品| 日韩在线一区二区三区| 久久日免费视频| 最新国产精品久久精品| yjizz视频| 欧美精品一区二区三区四区| 国产成人免费av在线| 欧美丝袜自拍制服另类| 蜜臀av性久久久久蜜臀aⅴ| 成人欧美一区二区三区黑人一 | 91天堂素人约啪| 欧美一个色资源| 国产乱码精品一区二区三区五月婷| 黄色一级大片在线免费观看| 亚洲精品成a人| 3d动漫精品啪啪一区二区下载| 中文字幕成人在线观看| 中文字幕永久免费| 久久先锋影音av鲁色资源网| 成人激情动漫在线观看| 日韩一区二区高清| 成人午夜av在线| 日韩一区二区不卡| 成人av在线影院| 欧美一区二区网站| 高清不卡一区二区| 日韩一区二区三区av| 成人av在线电影| 日韩三级av在线播放| fc2成人免费人成在线观看播放| 91精品国产综合久久精品图片 | 狠狠色丁香婷婷综合| 色婷婷综合久色| 麻豆久久久久久久| 在线国产电影不卡| 黄色精品一二区| 在线不卡a资源高清| 成人精品视频.| 日韩一级大片在线观看| jizz一区二区| 久久久综合视频| 欧美激情一区二区三区p站| 亚洲国产精品激情在线观看| 你懂的在线观看网站| 国产精品灌醉下药二区| 9.1成人看片免费版| 亚洲综合偷拍欧美一区色| 国产视频123区| 天天综合日日夜夜精品| 一本久道久久综合中文字幕| 六月丁香婷婷色狠狠久久| 在线看国产一区| 国产999精品久久久久久| 精品国产免费久久| 在线观看免费视频黄| 亚洲欧美国产77777| 潮喷失禁大喷水aⅴ无码| 男女男精品视频| 欧美日韩在线三区| 北条麻妃一区二区三区| 国产日韩欧美a| 少妇无套高潮一二三区| 首页综合国产亚洲丝袜| 欧美午夜宅男影院| 成人黄色大片在线观看| 久久精品人人爽人人爽| 3d动漫精品啪啪一区二区下载 | 久久久精品免费网站| 亚洲精品在线视频免费观看| 中文字幕一区在线观看| 久久精品国产亚洲AV成人婷婷| 免费在线观看成人| 宅男噜噜噜66一区二区66| 欧美人与性动交α欧美精品| 亚洲男同性恋视频| 中文字幕人妻一区二| 国产精品12区| 久久久99久久| 战狼4完整免费观看在线播放版| 麻豆91精品视频| 精品国产自在久精品国产| 中文字幕一区二区久久人妻网站| 五月婷婷色综合| 91精品国产aⅴ一区二区| 人妖粗暴刺激videos呻吟| 亚洲国产欧美日韩另类综合| 欧美日韩综合不卡| 不许穿内裤随时挨c调教h苏绵| 亚洲欧美二区三区| 欧美午夜理伦三级在线观看| 91在线国产观看| 一区二区三区在线免费观看| 在线一区二区观看| 又黄又爽又色的视频| 亚洲五码中文字幕| 91麻豆精品国产91久久久 | 中文在线字幕在线观看| www.激情成人| 伊人色综合久久天天| 欧美图片一区二区三区| 91在线丨porny丨国产| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美中文字幕一二三区视频| 99精品视频中文字幕| 亚洲综合一区二区三区| 91.com视频| 久久亚洲AV成人无码国产野外 | 91精品国产综合久久精品麻豆| 亚洲中文字幕一区| 美女视频一区二区| 久久精品亚洲精品国产欧美kt∨| 亚洲视频重口味| 91看片淫黄大片一级在线观看| 亚洲国产视频一区| 日韩一级高清毛片| 国产馆在线观看| www.视频一区| 一区二区三区在线视频免费| 欧美一区二区三区色| 日韩女同一区二区三区| 丁香婷婷综合激情五月色| 亚洲与欧洲av电影| 日韩美一区二区三区| 日韩在线观看免| 天堂va欧美va亚洲va老司机| 人人超碰91尤物精品国产| 国产亚洲一区二区三区在线观看| 色婷婷激情一区二区三区| 在线xxxxx| 韩国v欧美v日本v亚洲v| 自拍偷自拍亚洲精品播放| 欧美美女网站色| 非洲一级黄色片| www.色综合.com| 日韩精品乱码av一区二区| 久久精品一区二区| 在线观看一区二区视频| 国产又爽又黄无码无遮挡在线观看| 国产精品资源在线观看| 一区二区三区精品久久久| 欧美一级黄色录像| 成人欧美一区二区三区黑人一| 中文字幕在线播放一区二区| 日韩福利电影在线| 中文字幕乱码亚洲精品一区 | 欧美日韩亚洲综合一区| 一区二区三区四区免费| 成人av免费观看| 青青草原综合久久大伊人精品 | 精品亚洲aⅴ无码一区二区三区| a在线欧美一区| 日韩av午夜在线观看| 国产精品色呦呦| 欧美一区二区视频在线观看| 欧美一级片在线视频| 波多野结衣影院| 成人黄色网址在线观看| 美女性感视频久久| 亚洲免费观看高清完整版在线| 26uuu国产日韩综合| 欧美性色aⅴ视频一区日韩精品| 山东少妇露脸刺激对白在线| 娇妻高潮浓精白浆xxⅹ| 国产成人精品亚洲777人妖| 日韩一区精品字幕| 一区二区三区欧美久久|