精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何排查MySQL執行死鎖原因

數據庫 MySQL
為什么sql為null卻依然占有鎖?在查詢相關資料和咨詢jameszhou后,知道了這個實際和innodb 引擎的寫機制有關,innodb執行寫事務操作時,實際是先取得索引中該行的行鎖(即使該表上沒有任何索引,那么innodb會在后臺創建一個隱藏的聚集主鍵索引),再在緩存里寫入,最后事務commit后正式寫入DB中并釋放鎖。

今天碰到一次因死鎖導致更新操作的sql事務執行時間過長,特將排查過程記錄如下:

首先該sql事務的where條件已經命中了主鍵索引,而且表也不大,故可以排除掃表過慢原因。通過 show processlist;發現也只有該sql事務在操作這個表,初看起來似乎也不像是死鎖的原因:

但通過咨詢yellbehuang后發現,判斷sql事務是否死鎖不能簡單通過show processlist來判斷,而是要通過查詢innodb鎖的相關表來確定,和innodb鎖有關的主要有三個表,

  1. innodb_trx         ## 當前運行的所有事務 
  2. innodb_locks       ## 當前出現的鎖 
  3. innodb_lock_waits  ## 鎖等待的對應關系 

上面表的各個字段的含義如下:

  1. innodb_locks: 
  2. +————-+———————+——+—–+———+——-+ 
  3. | Field       | Type                | Null | Key | Default | Extra | 
  4. +————-+———————+——+—–+———+——-+ 
  5. | lock_id     | varchar(81)         | NO   |     |         |       |#鎖ID 
  6. | lock_trx_id | varchar(18)         | NO   |     |         |       |#擁有鎖的事務ID 
  7. | lock_mode   | varchar(32)         | NO   |     |         |       |#鎖模式 
  8. | lock_type   | varchar(32)         | NO   |     |         |       |#鎖類型 
  9. | lock_table  | varchar(1024)       | NO   |     |         |       |#被鎖的表 
  10. | lock_index  | varchar(1024)       | YES  |     | NULL    |       |#被鎖的索引 
  11. | lock_space  | bigint(21) unsigned | YES  |     | NULL    |       |#被鎖的表空間號 
  12. | lock_page   | bigint(21) unsigned | YES  |     | NULL    |       |#被鎖的頁號 
  13. | lock_rec    | bigint(21) unsigned | YES  |     | NULL    |       |#被鎖的記錄號 
  14. | lock_data   | varchar(8192)       | YES  |     | NULL    |       |#被鎖的數據 
  15. innodb_lock_waits: 
  16. +-------------------+-------------+------+-----+---------+-------+ 
  17. | Field | Type | Null | Key | Default | Extra | 
  18. +-------------------+-------------+------+-----+---------+-------+ 
  19. | requesting_trx_id | varchar(18) | NO | | | |#請求鎖的事務ID 
  20. | requested_lock_id | varchar(81) | NO | | | |#請求鎖的鎖ID 
  21. | blocking_trx_id | varchar(18) | NO | | | |#當前擁有鎖的事務ID 
  22. | blocking_lock_id | varchar(81) | NO | | | |#當前擁有鎖的鎖ID 
  23. +-------------------+-------------+------+-----+---------+-------+ 
  24. innodb_trx : 
  25. +—————————-+———————+——+—–+———————+——-+ 
  26. | Field | Type | Null | Key | Extra | 
  27. +—————————-+———————+——+—–+———————+——-+ 
  28. | trx_id | varchar(18) | NO | | |#事務ID 
  29. | trx_state | varchar(13) | NO | | |#事務狀態: 
  30. | trx_started | datetime | NO | | |#事務開始時間; 
  31. | trx_requested_lock_id | varchar(81) | YES | | |#innodb_locks.lock_id 
  32. | trx_wait_started | datetime | YES | | |#事務開始等待的時間 
  33. | trx_weight | bigint(21) unsigned | NO | | |# 
  34. | trx_mysql_thread_id | bigint(21) unsigned | NO | | |#事務線程ID 
  35. | trx_query | varchar(1024) | YES | | |#具體SQL語句 
  36. | trx_operation_state | varchar(64) | YES | | |#事務當前操作狀態 
  37. | trx_tables_in_use | bigint(21) unsigned | NO | | |#事務中有多少個表被使用 
  38. | trx_tables_locked | bigint(21) unsigned | NO | | |#事務擁有多少個鎖 
  39. | trx_lock_structs | bigint(21) unsigned | NO | | |# 
  40. | trx_lock_memory_bytes | bigint(21) unsigned | NO | | |#事務鎖住的內存大小(B) 
  41. | trx_rows_locked | bigint(21) unsigned | NO | | |#事務鎖住的行數 
  42. | trx_rows_modified | bigint(21) unsigned | NO | | |#事務更改的行數 
  43. | trx_concurrency_tickets | bigint(21) unsigned | NO | | |#事務并發票數 
  44. | trx_isolation_level | varchar(16) | NO | | |#事務隔離級別 
  45. | trx_unique_checks | int(1) | NO | | |#是否唯一性檢查 
  46. | trx_foreign_key_checks | int(1) | NO | | |#是否外鍵檢查 
  47. | trx_last_foreign_key_error | varchar(256) | YES | | |#最后的外鍵錯誤 
  48. | trx_adaptive_hash_latched | int(1) | NO | | |# 
  49. | trx_adaptive_hash_timeout | bigint(21) unsigned | NO | | |# 

可以通過select * from INNODB_LOCKS a inner join INNODB_TRX b on a.lock_trx_id=b.trx_id and trx_mysql_thread_id=線程id 來獲取該sql的鎖狀態,線程id可以通過上面的show processlist來獲得,執行結果如下:

此時發現,該sql連接確實處于LOCK WAIT鎖等待狀態

通過select * from innodb_lock_waits where requesting_trx_id=75CB26E5(即上面查詢得到的lock_trx_id)可以得到當前擁有鎖的事務ID 75CB26AE。

再通過select * from innodb_trx where lock_trx_id=75CB26AE獲取sql語句與線程id

從上面的結果中看出,該事務處于running狀態,但sql卻為null,該線程id即對于上面show processlist的206機器的30764端口的連接,該連接處于sleep狀態。為什么sql為null卻依然占有鎖?在查詢相關資料和咨詢jameszhou后,知道了這個實際和innodb 引擎的寫機制有關,innodb執行寫事務操作時,實際是先取得索引中該行的行鎖(即使該表上沒有任何索引,那么innodb會在后臺創建一個隱藏的聚集主鍵索引),再在緩存里寫入,最后事務commit后正式寫入DB中并釋放鎖。之所以sql為null,是因為該連接已經把sql update操作執行寫入緩存中了,但是由于代碼bug沒有最后commit,導致一直占用著行鎖,后續新的連接想寫這一行數據卻因為一直取不到行鎖而處于長時間的等待狀態。

那為什么innodb需要兩次寫?下面是我查詢相關資料得出來的結論:

因為innodb中的日志是邏輯的,所謂邏輯就是比如當插入一條記錄時,它可能會導致在某一個頁面(這條記錄最終被插入的位置)的多個偏移位置寫入某個長度的值,比如頁頭的記錄數,槽數,頁尾槽數據,頁中的記錄值等等,這些本是一些物理操作,而innodb為了節約日志量及其它一些原因,設計為邏輯處理的方式,那就是它會在一個頁面的基礎上,把一條記錄插入,那么在日志記錄中記錄的內容為表空間號、頁面號、記錄的各個列的值等等,在內部轉換為上面的物理操作。

但這里的一個問題是,如果那個頁面本身是錯誤的,這種錯誤有可能是因為寫斷裂(1個頁面為16K,分多次寫入,后面的有可能沒有寫成功,導致這個頁面不完整)引起的,那么這個邏輯操作就沒辦法完成了,因為它的前提是這個頁面還是正確的,完整的,因為如果這個頁面不正確的話,這個頁面里的數據是無效的,有可能產生各種不可預料的問題。

那么正是因為這個問題,所以必須要首先保證這個頁面是正確的,方法就是兩次寫,它的思想最終是一種備份思想,也就是一種鏡像。

innodb兩次寫的過程:

可以將兩次寫看作是在Innodb表空間內部分配的一個短期的日志文件,這一日志文件包含100個數據頁。Innodb在寫出緩沖區中的數據頁時采用的是一次寫多個頁的方式,這樣多個頁就可以先順序寫入到兩次寫緩沖區并調用fsync()保證這些數據被寫出到磁盤,然后數據頁才被定出到它們實際的存儲位置并再次調用fsync()。故障恢復時Innodb檢查doublewrite緩沖區與數據頁原存儲位置的內容,若數據頁在兩次寫緩沖區中處于不一致狀態將被簡單的丟棄,若在原存儲位置中不一致則從兩次寫緩沖區中還原。

原文鏈接:https://www.qcloud.com/community/article/886137

作者:陳文嘯

【本文是51CTO專欄作者“騰訊云技術社區”的原創稿件,轉載請通過51CTO聯系原作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-11-29 16:35:33

解決死鎖Java線程

2021-03-03 08:57:46

java死鎖線程

2023-02-16 08:10:40

死鎖線程

2019-03-15 16:20:45

MySQL死鎖排查命令

2017-12-19 14:00:16

數據庫MySQL死鎖排查

2023-07-26 07:18:54

死鎖線程池

2022-01-26 19:42:05

MySQL亂碼排查

2025-05-13 08:15:00

PoE供電網絡

2018-05-29 11:44:22

數據庫MySQL死鎖

2022-05-16 07:35:47

死鎖工具jstack

2010-11-09 16:29:39

SQL Server死

2021-08-24 08:01:15

死鎖工具多線編程

2024-12-27 00:00:00

SQL死鎖數據庫

2011-08-09 13:34:56

MySQL數據庫負荷較高

2017-06-07 16:10:24

Mysql死鎖死鎖日志

2016-10-20 15:27:18

MySQLredo死鎖

2010-07-02 10:53:32

SQL Server死

2022-05-11 07:41:55

死鎖運算線程

2021-10-20 20:27:55

MySQL死鎖并發

2023-09-13 14:52:11

MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

中文字幕午夜精品一区二区三区 | 99国产精品99| 黄色免费网站在线观看| 岛国av一区| 最新日韩在线视频| 国产精品吹潮在线观看| 大陆极品少妇内射aaaaa| 亚洲视频在线观看免费视频| 欧美热在线视频精品999| 亚洲午夜视频在线| 99超碰麻豆| 成年人一级黄色片| 亚洲ww精品| 国产精品女主播av| 国产精品aaaa| 黄色三级生活片| 3d欧美精品动漫xxxx无尽| 99久久777色| 欧美一级片久久久久久久| 丝袜熟女一区二区三区| 2021中文字幕在线| 99久久久精品| 日本a级片电影一区二区| 真人bbbbbbbbb毛片| 日韩伦理精品| 国产日产欧美一区| 国产精品爽爽爽爽爽爽在线观看| 黄色三级生活片| 精品视频自拍| 欧美性少妇18aaaa视频| 久久综合中文色婷婷| 午夜精品久久久久久久久久久久久蜜桃| www.亚洲一二| 午夜精品在线看| 精品久久中出| 一级一片免费看| 国产精品手机在线播放| 欧美视频自拍偷拍| 最新精品视频| 亚洲国产精品欧美久久 | 最近中文字幕日韩精品 | 国产精品12p| 国产av无码专区亚洲a∨毛片| 欧美在线黄色| 亚洲激情在线视频| 国产视频一区二区视频| 色欧美激情视频在线| 国产一区欧美日韩| 97视频在线看| www.日本高清视频| 久操精品在线| 亚洲图片在区色| 日韩精品aaa| 欧美调教sm| 亚洲v中文字幕| 日韩av在线播放不卡| 国产在线色视频| 国内精品伊人久久久久av一坑| 久久久亚洲欧洲日产国码aⅴ| 国产伦精品一区二区三区妓女| 超碰cao国产精品一区二区| 欧美tk丨vk视频| av丝袜天堂网| 亚洲不卡系列| 亚洲一区视频在线| 和岳每晚弄的高潮嗷嗷叫视频| 青草av在线| 中文字幕欧美日韩一区| 国产精品一区视频| 艳妇乳肉豪妇荡乳av无码福利 | 丁香六月激情网| 免费福利在线观看| 国产成人在线视频播放| 国产精品1234| 一级特黄aa大片| 国产日韩欧美三区| 久久成年人免费电影| 精品人伦一区二区| 麻豆精品少妇| 亚洲欧美制服第一页| 26uuu国产| 九七电影院97理论片久久tvb| 亚洲6080在线| 亚洲国产精品毛片av不卡在线| 97精品国产综合久久久动漫日韩| 亚洲精品福利视频网站| 亚洲日本欧美在线| 极品美乳网红视频免费在线观看| 中文av字幕一区| 一本色道久久88亚洲精品综合| 国产福利免费在线观看| 99久久综合狠狠综合久久| 欧美国产一区二区在线| 亚洲高清视频在线播放| 久久男人中文字幕资源站| 国产精品国产三级国产专区53 | 欧美极品美女电影一区| 自拍偷拍你懂的| 欧美**字幕| 久久视频免费在线播放| 天天插天天操天天干| 在线不卡欧美| 欧美精品videos| 国产乱码77777777| 玖玖在线精品| 国产成人精品电影| 国产熟女一区二区三区五月婷| 99久久婷婷国产| 中国 免费 av| 3d玉蒲团在线观看| 亚洲国产精品t66y| 美女av免费观看| 五月天激情在线| 亚洲九九爱视频| 99久热在线精品视频| 亚洲承认视频| 欧美亚洲丝袜传媒另类| 亚洲美女高潮久久久| 国产一区丝袜| 久久久国产视频| 色婷婷在线视频观看| 三级亚洲高清视频| 欧美一区二区三区精品电影| 国产精品无码久久久久成人app| 极品少妇xxxx精品少妇偷拍 | 午夜一区二区视频| 亚洲欧美专区| 欧美一区二区视频在线观看| 亚洲 自拍 另类 欧美 丝袜| 亚洲经典视频| 亚洲成人av中文字幕| 亚洲蜜桃精久久久久久久久久久久| 五月天久久网站| 欧美激情图片区| 国产精品国产三级国产普通话对白| 久久奇米777| 奇米影视亚洲色图| 一本大道色婷婷在线| 91激情在线视频| 在线免费看v片| 久久美女视频| 久久免费视频网站| www.激情五月| 久久久久99精品一区| 一区二区三区在线观看www| 九九热线视频只有这里最精品| 日韩电影免费在线观看中文字幕| 无码人妻丰满熟妇啪啪欧美| 免费看的黄色欧美网站| 国产一区玩具在线观看| 性猛交xxxx乱大交孕妇印度| 亚洲免费伊人电影| 五月天六月丁香| 亚洲男人都懂第一日本| 精品国产一区二区三区在线观看 | 日韩欧美视频一区二区三区| 波多野结衣有码| 成人在线免费观看网站| 欧美激情一区二区三区久久久 | 久久久久9999亚洲精品| 国产精品亚洲a| 日韩三级av高清片| 亚洲天堂av女优| 久久精品视频2| 国产欧美精品国产国产专区| 欧美一级视频在线播放| 福利一区二区三区视频在线观看 | 精品国产一区二区三| 日韩精品美女| 综合136福利视频在线| 久久网免费视频| 蜜臀av国产精品久久久久| 激情伦成人综合小说| 中老年在线免费视频| 在线视频欧美性高潮| 国产乱淫片视频| 亚洲高清三级视频| 日本高清免费在线视频| 欧美日韩中文| 成人激情免费在线| 国产在线色视频| 91精品国产乱码久久蜜臀| 久久精品欧美一区二区| 国产呦精品一区二区三区网站 | 亚洲专区一区| 一本色道久久综合亚洲精品婷婷| 日韩一区二区三区高清在线观看| 欧美亚洲伦理www| 欧美成人三区| 欧洲精品中文字幕| 在线 丝袜 欧美 日韩 制服| 国产精品观看| 91精品国产综合久久久久久丝袜 | 欧美成人小视频| 在线免费观看中文字幕| 亚洲精品国产视频| 白丝女仆被免费网站| 国产一区二区在线看| 99热在线这里只有精品| 婷婷综合亚洲| 欧美久久在线| 亚洲精品一区二区三区中文字幕 | 看全色黄大色大片免费久久久| 国产精品免费小视频| 视频在线不卡| 岛国av午夜精品| 五月天激情小说| 久久电影网站中文字幕| 亚洲欧洲日韩精品| 日韩精品第二页| 1769国内精品视频在线播放| 亚洲aⅴ乱码精品成人区| 精品成人在线视频| 国产精品边吃奶边做爽| 狠狠色丁香久久婷婷综合_中| 精品一区二区中文字幕| 久操成人av| 国产99午夜精品一区二区三区| 欧美亚洲系列| 日韩中文理论片| 国产在线观看黄| 国产婷婷色综合av蜜臀av| 精品成人无码久久久久久| 亚洲大片精品永久免费| 麻豆一区产品精品蜜桃的特点 | 日本电影亚洲天堂一区| 国产真实乱偷精品视频| 亚洲美女精品一区| 情侣偷拍对白清晰饥渴难耐| 国产在线精品一区二区三区不卡| 虎白女粉嫩尤物福利视频| 日韩午夜高潮| 日韩免费毛片| 国产不卡精品在线| 久久久在线观看| 在线看女人毛片| 欧美成年人网站| 国产一二区在线| 久久夜精品va视频免费观看| 免费在线你懂的| 日韩在线中文字| 日本a在线播放| 深夜福利一区二区| 日韩三级影院| 久久在线观看视频| 久操视频在线免费播放| 久久亚洲欧美日韩精品专区| 成人无遮挡免费网站视频在线观看| 精品免费视频.| 超碰在线人人干| 欧美videos中文字幕| 亚洲男人天堂久久| 欧美在线free| 国产99久久久久久免费看| 在线视频国内自拍亚洲视频| 夜夜爽妓女8888视频免费观看| 日本精品一级二级| 中文字幕在线播放日韩| 亚洲国产精品视频| 日本三级免费看| 国产精品污www在线观看| 人妻熟人中文字幕一区二区| 中文在线免费一区三区高中清不卡| 天美传媒免费在线观看| 亚洲人吸女人奶水| 久久久视频6r| yourporn久久国产精品| 欧美bbbbb性bbbbb视频| 国产亚洲精品久| 成人无码精品1区2区3区免费看 | 免费亚洲网站| 看欧美ab黄色大片视频免费| 亚洲三级电影在线观看| 伊甸园精品99久久久久久| 91精品久久久久久久蜜月| 日韩av影视| 91精品一区二区三区综合在线爱 | 欧美电影免费提供在线观看| www.亚洲激情| 在线成人av影院| 在线免费一区二区| 91精品国产综合久久精品app| 亚洲av无码国产精品永久一区| 国产手机视频精品| 日本蜜桃在线观看| 久久久久久久久中文字幕| 在线观看精品| 国产v亚洲v天堂无码| 精品国产不卡| 欧美中日韩免费视频| 国产亚洲成av人片在线观黄桃| 日本一区二区在线视频观看| 亚洲色图欧美| 欧美 激情 在线| 国产日韩欧美在线播放不卡| 无需播放器的av| 免费在线观看不卡| 一本色道久久hezyo无码| 日本一区二区免费在线| 国产一级二级毛片| 欧美性大战xxxxx久久久| 性做久久久久久久久久| 一区二区三区国产视频| 99青草视频在线播放视| 国产一区二区三区欧美| 亚洲小说区图片| 国产精品视频不卡| 色88888久久久久久影院| 久久人人九九| 亚洲宅男一区| 男人添女荫道口喷水视频| 免费高清在线一区| 日本丰满少妇裸体自慰| 亚洲色图视频网站| 日批视频免费观看| 精品一区二区三区三区| 午夜dj在线观看高清视频完整版| 国产精品美女999| 日韩大片在线免费观看| 国产aaa免费视频| 激情久久五月天| 亚洲天堂av中文字幕| 色噜噜狠狠成人网p站| 无码精品视频一区二区三区| 欧美肥婆姓交大片| 91av久久| 成人区精品一区二区| 亚洲欧美日韩高清在线| 99sesese| 粉嫩aⅴ一区二区三区四区 | 一级黄色片在线播放| 国产亚洲视频中文字幕视频| 日韩伦理在线一区| 国产三级精品在线不卡| 欧美精美视频| 六月丁香激情网| 波多野结衣中文字幕一区| 91视频免费观看网站| 国产精品久久久久四虎| 在线观看亚洲黄色| 国产一区二区三区欧美| 免费污视频在线一区| 日本不卡高清视频一区| 久久欧美肥婆一二区| 一区二区三区伦理片| 在线视频欧美区| 午夜看片在线免费| 成人免费直播live| 午夜精品久久| 可以看的av网址| 亚洲成a人片在线观看中文| 全国男人的天堂网| 精品国产欧美一区二区三区成人 | 国产精品免费看| 五月婷婷综合在线观看| 色综合一区二区| 99热这里只有精品9| 久精品免费视频| 欧美精品资源| 一区二区成人国产精品| 狠狠色丁香久久婷婷综| 老湿机69福利| 亚洲第一av在线| 成人性生活av| 国产另类第一区| 美女视频一区免费观看| 国产精品99久久久精品无码| 一区二区三区国产精品| 国产情侣小视频| 精品国产一区二区三区久久狼5月| 欧美经典影片视频网站| 视频在线99re| 国产精品婷婷| 神马久久久久久久久久久| 制服丝袜在线91| 秋霞影院午夜丰满少妇在线视频| 91精品视频在线| 日韩国产欧美| 国产淫片av片久久久久久| 国产农村妇女毛片精品久久麻豆| 国产美女裸体无遮挡免费视频| 久久久久亚洲精品国产| 国产a久久精品一区二区三区| 午夜免费福利视频在线观看| 久久精品免费在线观看| 国产男女裸体做爰爽爽| 国内精品久久久久久| 日韩在线理论| 50一60岁老妇女毛片| 欧美亚日韩国产aⅴ精品中极品| bt在线麻豆视频| 欧美乱偷一区二区三区在线| 激情综合色丁香一区二区| 日韩 欧美 中文| 久久天天躁日日躁| 国产麻豆精品久久| 国产精品熟妇一区二区三区四区 | 黑人操亚洲女人| 国产精品久久视频| 日韩午夜精品|