亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL DeadLock故障排查全過程記錄

2024-07-25 19:09:28
字體:
供稿:網(wǎng)友

【作者】

劉博:攜程技術(shù)保障中心數(shù)據(jù)庫高級經(jīng)理,主要關(guān)注Sql server和Mysql的運維和故障處理。

【環(huán)境】

版本號:5.6.21

隔離級別:REPEATABLE READ

【問題描述】

接到監(jiān)控報警,有一個線上的應(yīng)用DeadLock報錯,每15分鐘會準(zhǔn)時出現(xiàn),報錯統(tǒng)計如下圖:

MySQL,DeadLock,故障排查

登錄Mysql服務(wù)器查看日志:

mysql> show engine innodb status/G*** (1) TRANSACTION:TRANSACTION 102973, ACTIVE 11 sec starting index readmysql tables in use 3, locked 3LOCK 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 updatingUPDATE TestTableSET column1 = 1,Column2 = sysdate(),Column3= '026'Column4 = 0AND column5 = 485AND 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 waitingRecord lock, heap no 859 PHYSICAL RECORD: n_fields 2; compact format; info bits 00: len 3; hex 53454b; asc SEK;;1: len 8; hex 80000000007e1452; asc ~ R;;*** (2) TRANSACTION:TRANSACTION 102972, ACTIVE 26 sec starting index readmysql tables in use 3, locked 3219 lock struct(s), heap size 24784, 2906 row lock(s), undo log entries 7MySQL thread id 5, OS thread handle 140024996841216, query id 84 localhost us updatingUPDATE TestTableSET Column1 = 1,Column2 = sysdate(),Column3 = '026'Column4 = 0AND Column5 = 485AND 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 XRecord lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 00: len 8; hex 73757072656d756d; asc supremum;;Record lock, heap no 859 PHYSICAL RECORD: n_fields 2; compact format; info bits 00: 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 waitingRecord lock, heap no 38 PHYSICAL RECORD: n_fields 2; compact format; info bits 00: len 3; hex 53454b; asc SEK;;1: len 8; hex 80000000007eea14; asc ~ ;;

大致一看,更新同一索引的同一行,應(yīng)該是一個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結(jié)果:

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 優(yōu)化技術(shù),對同一個表可以使用多個索引分別進(jìn)行條件掃描。

相關(guān)文檔: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ù)以上初步分析,猜測應(yīng)該就是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,設(shè)置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: 103006waiting_thread: 36waiting_query: UPDATE TestTable SET Column1 = 1, Column2 = sysdate(), Column3 = '026' Column4 = 0 AND Column5 = 485 AND Column6 = 'SEK'blocking_trx_id: 103003blocking_thread: 37blocking_query: NULL*************************** 2. row ***************************waiting_trx_id: 421500433538672waiting_thread: 39waiting_query: select count(Column5) from TestTable where Column5 = 485blocking_trx_id: 103006blocking_thread: 36blocking_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: 103006requested_lock_id: 103006:417:1493:859blocking_trx_id: 103003blocking_lock_id: 103003:417:1493:859*************************** 2. row ***************************requesting_trx_id: 421500433538672requested_lock_id: 421500433538672:417:749:2blocking_trx_id: 103006blocking_lock_id: 103006:417:749:22 rows in set, 1 warning (0.00 sec)
mysql> select * from INNODB_LOCKS /G;*************************** 1. row ***************************lock_id: 103006:417:1493:859lock_trx_id: 103006lock_mode: Xlock_type: RECORDlock_table: test.TestTablelock_index: idxColumn6lock_space: 417lock_page: 1493lock_rec: 859lock_data: 'SEK', 8262738*************************** 2. row ***************************lock_id: 103003:417:1493:859lock_trx_id: 103003lock_mode: Xlock_type: RECORDlock_table:test.TestTablelock_index: idxColumn6lock_space: 417lock_page: 1493lock_rec: 859lock_data: 'SEK', 8262738*************************** 3. row ***************************lock_id: 421500433538672:417:749:2lock_trx_id: 421500433538672lock_mode: Slock_type: RECORDlock_table: test.TestTablelock_index: column5_indexlock_space: 417lock_page: 749lock_rec: 2lock_data: 485, 8317620*************************** 4. row ***************************lock_id: 103006:417:749:2lock_trx_id: 103006lock_mode: Xlock_type: RECORDlock_table: test.TestTablelock_index: column5_indexlock_space: 417lock_page: 749lock_rec: 2lock_data: 485, 83176204 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相關(guān)的鎖。被Block是因為intersect的原因,還需要idxColumn6的鎖,至此思路已經(jīng)清晰,對整個分配鎖的信息簡化一下,如下表格(請求到的鎖用青色表示,需獲取但未獲取到的鎖用紅色表示):

 

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

 

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

【解決方法】

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
91丨porny丨国产入口| 老鸭窝亚洲一区二区三区| 2021av在线| 97秋霞电影网| 亚洲日本成人| 亚洲高清极品| 福利在线一区| 国产女主播一区| 亚洲不卡系列| 欧美二区在线观看| 一级片免费在线| 欧美oldwomenvideos| 在线区一区二视频| 国产精品99久久久久久董美香| 国产一区二区日韩| 91精品在线观看视频| 亚洲视屏一区| 国产成人极品视频| 久草视频免费播放| 久久国产高清视频| 国产精品波多野结衣| 一级毛片免费看| 理论片一区二区在线| 菠萝蜜视频在线观看一区| 男人的天堂va免费视频| 福利视频在线播放| 免费看av成人| 大桥未久av一区二区三区中文| 国产精品毛片一区视频| 成人福利电影精品一区二区在线观看| 国产精品777一区二区| 国产成人一区二区三区免费看| av色综合久久天堂av综合| 国产精品区一区| 无码久久精品国产亚洲av影片| 色尼玛亚洲综合影院| 久久亚洲风情| 欧美日韩日日夜夜| 一本色道久久88亚洲综合88| 国产精品91在线| 一区二区三区在线视频观看| 国产日韩三区| 亚洲精品四区| 国产一区二区三区综合| 亚洲第一网站在线观看| 亚洲欧美日韩国产中文| 佐佐木明希av| 久久影院在线观看| 7m精品国产导航在线| 国产一级揄自揄精品视频| 精品成人a区在线观看| xxxx日韩| 午夜视频在线观看精品中文| 香蕉青柠影院| 中文字幕在线播放一区| 91入口在线观看| 欧美特级黄色录像| 亚洲电影成人成人影院| 色婷婷综合久久久久中文| 国产欧美精品一区二区三区四区| 欧美精品1区| 国产色综合天天综合网| 欧美韩国日本不卡| 牛牛影视久久网| 亚洲天堂一区在线观看| 国产一区精品| 国产农村老头老太视频| 精品入口麻豆传煤| 香蕉污视频在线观看| 国产精品免费大片| 久久频这里精品99香蕉| 中文字幕の友人北条麻妃| 五月天亚洲婷婷| 精品99久久久久成人网站免费| 国产裸体视频网站| 亚洲缚视频在线观看| 欧美一区二区三区在线观看视频| 亚洲天堂一二三| 女人成午夜大片7777在线| 欧美劲爆第一页| 日本一区高清不卡| 91精品天堂| 翔田千里精品久久一区二| 一区二区黄色| 欧美一区二区成人| 亚洲欧洲精品一区二区三区不卡| 国产福利电影在线| 成人一级片网站| 久久99精品久久久久久野外| 99久久国产宗和精品1上映| 自拍av在线| 91麻豆国产自产在线观看亚洲| 国产精品7777777| 国产视频一区欧美| 成人小视频在线观看免费| 国产偷人爽久久久久久老妇app| 黄色成人在线观看| 亚洲怡红院av| 制服丨自拍丨欧美丨动漫丨| 亚洲欧美精品一区二区| 中文字幕 国产精品| 国产亚洲精品久久久网站好莱| 欧美xxxxx牲另类人与| 免费人成在线观看视频播放| 性欧美精品男男| 性色a∨人人爽网站| 在线视频不卡一区二区三区| 九九热在线视频观看这里只有精品| 国产成人极品视频| 欧美一区二区麻豆红桃视频| 亚洲欧洲另类国产综合| 欧美高清不卡在线| 在线视频91p| 美女福利视频一区二区| 久草免费在线观看视频| av在线免费电影| 国产亚洲精品福利| 性金发美女69hd大尺寸| 欧美虐宫另类残忍视频| 操她视频网站| 日韩精品一区二区av| 久久人人爽人人爽人人片亚洲| 国产精品国模大尺度视频| 9久久9毛片又大又硬又粗| 欧美精品日韩精品| 久久精品久久精品| 香蕉视频污视频| 国产精品国产对白熟妇| 欧美日韩国产一区二区| 影院欧美亚洲| 日韩精品不卡一区二区| 日韩一区二区在线看| 国产亚洲精品美女久久| 国产成年人免费视频| 中文字幕亚洲视频| 欧美日韩一区二区三区在线免费观看| 宅男在线国产精品| 91露出在线| 久久福利视频一区二区| 欧美wwwxxxx| 影音先锋2020资源| 成人免费网站视频www| 友田真希在线| 蜜桃av.网站在线观看| 69av成年福利视频| 中文精品一区二区三区| 国产日韩av高清| wwwjizzjizzcom| 欧美伊人久久久久久午夜久久久久| 国产日韩欧美电影| 国产欧美日韩视频| 久久不射电影网| 亚洲女同志freevdieo| 亚洲欧美天堂在线| 国产精品v欧美精品v日本精品动漫| 一本色道久久88综合亚洲精品ⅰ| 一本到在线视频| 深夜视频在线观看| 亚洲av无码片一区二区三区| 国产在线观看无码免费视频| 激情欧美日韩一区二区| 五月天综合婷婷| 亚洲人体影院| 亚洲天堂av电影| 日韩电影免费在线观看中文字幕| 在线观看国产福利| 欧美少妇一级片| 欧美性开放视频| 成人av电影在线观看| 茄子视频成人在线观看| 爱福利视频一区| 国产亚洲欧美精品久久久www| 亚洲一区二区三区综合| 日韩久久久久久久| 深爱五月激情网| 久久综合亚洲色hezyo国产| 欧美黑人巨大xxx极品| 亚洲精品自拍动漫在线| 日韩电影在线观看网站| 亚洲精品资源美女情侣酒店| 欧美一区二区三区四| 川上优av一区二区线观看| 日韩三级久久久| 欧美日韩精品二区第二页| 国产精品成人在线观看| 亚洲精品在线影院| 久久五月天色综合| 日韩高清av电影| 在线视频中文字幕久| 制服丝袜网站| 大胆人体一区二区| 天堂va蜜桃一区二区三区漫画版| 国产亚洲精品v| av观看在线免费| 最新不卡av在线| 亚洲欧美日韩精品久久| 又色又爽又黄无遮挡的免费视频| 日韩av片免费观看| 免费a级毛片永久免费| 欧美福利小视频| 亚洲风情在线资源| 天堂av电影在线观看| 精品久久久久久久| 精品国产伦一区二区三区| 亚洲欧美日韩国产一区二区三区| 久久久999精品| 日韩高清av一区二区三区| 久久一本综合频道| 久久精品日韩精品| 欧美成人vr18sexvr| 国产小视频你懂的| 精品国产乱码久久久久久88av| 欧美优质美女网站| 亚洲影视在线播放| 欧美大片在线观看一区二区| 午夜性色福利影院| 精品人妻无码一区二区三区换脸| 小早川怜子痴女在线精品视频| 影音先锋男士资源站| 久久99精品久久久| sese在线视频| 亚洲综合爱爱久久网| 色戒在线免费观看| 亚洲精品日韩av| 午夜精品久久久久久久星辰影院| 久久久久久久久久福利| 日韩精品麻豆| 天天草夜夜草| 国产一区二区三区在线看麻豆| 蜜桃av中文字幕| 久久77777| 影音先锋中文字幕第一页| 亚洲伊人精品酒店| 欧美亚洲色综久久精品国产| 一区二区视频在线观看| 伊人久久噜噜噜躁狠狠躁| 狼人综合视频| 97人妻精品一区二区免费| 欧美欧美黄在线二区| 青草久久视频| 一本久道高清无码视频| 国产69精品久久久久久久| 妞干网在线视频观看| 风间由美性色一区二区三区四区| 日本精品国产| 欧美二区在线观看| av免费在线观看不卡| 国产精品免费人成网站| 欧美在线极品| 亚洲图片在线观看| 国产一区二区在线观看免费| 丁香花在线影院观看在线播放| 欧美大片免费观看网址| 一级黄色特级片| 亚洲同志网站入口| 色八戒一区二区三区| 在线免费观看视频一区| 美女精品视频在线| 久久精品国产久精国产一老狼| 无码国产69精品久久久久网站| 色综合天天综合在线视频| 毛片激情在线观看| 成人免费视频caoporn| 国产视频精品免费播放| aa日韩免费精品视频一| 久久免费精品一区二区| 国产成人av毛片| av漫画网站在线观看| 日本aⅴ中文| 欧美激情一区二区三区高清视频| 国产精品夜夜夜爽阿娇| 成人亚洲一区二区一| 国产女主播一区二区| 在线国产一区| 成人短视频在线观看| 亚洲av电影一区| 国产精品边吃奶边做爽| 韩国精品视频在线观看| 久久久精品在线视频| 视频一区二区综合| 欧美一区二区三区在| 亚洲国产精品二区| 午夜av一区二区| 国模吧一区二区三区| 欧美13一16娇小xxxx| 成人影院大全| 草视频在线观看| 国产福利在线观看| 亚洲精品福利| 亚洲图片小说视频| 日本xxxx免费| 伦理中文字幕亚洲| fc2成人免费人成在线观看播放| 精品视频免费在线播放| 午夜在线视频免费观看| 亚洲男人的天堂一区二区| 成人高清免费观看| av在线播放免费| 中文字幕无码人妻少妇免费| 久久久综合久久久| 91最新在线观看| 国产一区二区免费看| 国产精品资源站| 美女视频黄 久久| 国产无遮挡又黄又爽| 美女视频黄免费的亚洲男人天堂| 亚洲风情在线资源| 国产精品果冻传媒| 萌白酱国产一区二区| 亚洲色图另类小说| 老司机精品视频在线观看6| 成年人午夜免费视频| 国产精品无码粉嫩小泬| 天天躁日日躁狠狠躁免费麻豆| 久久精品国产亚洲一区二区| 免费成人高清在线视频theav| 奇米色在线视频| 成人黄色一级大片| 精品久久久中文字幕| 国产精品一在线观看| 欧美黑人巨大xxxxx| 国产日韩欧美三级| 男女啪啪无遮挡| 久久综合中文字幕| 色女孩综合影院| 在线观看免费毛片| 天堂资源最新在线| 色wwwwww|