精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中国一区二区三区| 97人人做人人爱| 九九热免费在线观看| 国内精品不卡| 成人高清视频在线观看| 热99精品里视频精品| 四虎成人免费影院| 免费观看在线一区二区三区| 亚洲不卡在线观看| 视频一区不卡| 亚洲免费视频网| 视频一区二区国产| 久久色在线播放| 黄色片视频免费观看| 国产91亚洲精品久久久| 亚洲国产精品一区二区www在线 | 成人h动漫精品一区二| 国产69久久精品成人| 国产中文av在线| 亚洲欧美日本伦理| 欧美一级二级三级乱码| 人妻内射一区二区在线视频 | 国产精品欧美综合亚洲| 亚洲视频二区| 色综合久久精品亚洲国产| 国产精品密蕾丝袜| 极品国产人妖chinesets亚洲人妖| 在线观看日韩高清av| 丁香六月激情婷婷| 黄色免费在线看| 久久久久久久久久久电影| 97视频资源在线观看| 制服丝袜在线一区| 国产精品日本欧美一区二区三区| 久久综合免费视频| 国产精品成人无码免费| 色狼人综合干| 精品国产成人系列| 久久久九九九热| 成人国产精选| 91国内精品野花午夜精品| 男人和女人啪啪网站| 五月花成人网| 亚洲美女在线国产| 日韩第一页在线观看| 尤物在线视频| 欧美激情一区二区三区| 欧美亚洲爱爱另类综合| 午夜视频免费在线| 成人精品一区二区三区四区| 亚洲在线视频福利| 国产露脸91国语对白| 久久国内精品视频| 国产精品久久久久久久久男 | 欧美日韩国产精品一区二区| 四虎永久在线观看| 成人av资源在线观看| 成人三级在线| 亚洲精品字幕在线| 成人性生交大片免费看中文网站| www 成人av com| 99在线精品视频免费观看软件| 韩国精品一区二区| 91久久久久久久久久| 亚洲一区中文字幕在线| 激情小说亚洲一区| 91精品中文在线| 国产手机精品视频| 粉嫩av亚洲一区二区图片| 成人欧美一区二区| 秋霞视频一区二区| 91在线国产观看| 日本黄网免费一区二区精品| 国产福利片在线| 国产精品久久久久影院色老大| 青青草原国产免费| av文字幕在线观看| 亚洲国产va精品久久久不卡综合| 免费看黄在线看| 性感女国产在线| 色八戒一区二区三区| 亚洲 欧美 另类人妖| **日韩最新| 日韩欧美在线1卡| 国产伦精品一区二区免费| 杨幂一区二区三区免费看视频| 亚洲天堂影视av| 中国一级片在线观看| 欧美日韩岛国| 秋霞成人午夜鲁丝一区二区三区| 亚洲字幕av一区二区三区四区| 国产一区二区三区在线看麻豆| 国产高清精品一区| 久香视频在线观看| 中文字幕一区二区不卡| www.射射射| 国产一区二区三区影视| 日韩欧美美女一区二区三区| 中文字幕在线看高清电影| 97精品国产福利一区二区三区| 欧美极品在线视频| 无码免费一区二区三区| 国产精品一区三区| 欧美一区二区三区在线播放 | 亚洲第一第二区| 久久久五月婷婷| 乱熟女高潮一区二区在线| 久久91导航| 欧美大片顶级少妇| 无码少妇精品一区二区免费动态| 午夜激情一区| 国产福利精品av综合导导航| www.国产黄色| 欧美韩国日本不卡| 欧美深夜福利视频| 不卡的国产精品| 亚洲欧美视频在线| 国产亚洲第一页| 久久精品国产亚洲一区二区三区| 久久久久久高清| 怡红院在线观看| 欧美三级一区二区| 中文字幕丰满孑伦无码专区| 欧美福利视频| 国产日韩精品在线播放| 蜜桃视频在线免费| 亚洲第一搞黄网站| 九九九久久久久久久| 日韩电影在线视频| 日本午夜在线亚洲.国产| 蜜臀av在线观看| 亚洲人123区| 色噜噜狠狠一区二区| 国产a久久精品一区二区三区 | 日本免费在线播放| 国产精品一区二区三区网站| 一区二区成人国产精品| 性欧美超级视频| 日韩高清欧美高清| 国产无遮挡aaa片爽爽| 国产成人免费视| 91视频成人免费| 精品国产不卡一区二区| www.亚洲免费视频| 波多野结衣高清视频| 久久综合国产精品| 亚洲中文字幕无码中文字| 国内露脸中年夫妇交换精品| 欧美精品久久久久| 亚洲精品视频网| 亚洲一区二区综合| 女性生殖扒开酷刑vk| 亚洲先锋成人| 国产九色精品| h片在线观看视频免费| 精品福利一二区| 国产成人精品av久久| 成人黄色在线看| 可以在线看的av网站| 精品深夜福利视频| 57pao国产成人免费| 噜噜噜在线观看播放视频| 色中色一区二区| 蜜乳av中文字幕| 久久国产免费看| 加勒比海盗1在线观看免费国语版| 国产精久久久| 欧美精品福利视频| 午夜影院在线视频| 色哟哟国产精品免费观看| 亚洲色成人网站www永久四虎| 日韩av中文字幕一区二区| 亚洲欧美丝袜| 日韩高清在线观看一区二区| 欧美激情综合亚洲一二区| 午夜黄色小视频| 欧美亚洲日本国产| 疯狂试爱三2浴室激情视频| 国产高清在线观看免费不卡| 美女日批免费视频| 日韩精品欧美| 成人av中文| 欧美动物xxx| 日韩视频免费看| 乱色精品无码一区二区国产盗| 精品久久久久久中文字幕一区奶水| 蜜桃av免费看| 国产精品中文字幕欧美| 69堂免费视频| 亚洲不卡av不卡一区二区| 国产精品乱码| 777午夜精品电影免费看| 欧美精品在线免费| 久热av在线| 日韩一区二区三区av| 久久国产黄色片| 亚洲男人电影天堂| 人妻体内射精一区二区| 韩国欧美一区二区| 亚洲人成无码www久久久| 伊人久久大香线| 欧美激情第六页| 日韩精品久久久久久久软件91| 欧美专区在线视频| 肉肉视频在线观看| 怡红院精品视频| 男人天堂手机在线观看| 欧美私模裸体表演在线观看| 亚洲一区 视频| 日韩一区在线免费观看| av小说在线观看| 国产精品1024| 日本高清久久久| 久久美女性网| 精品人妻少妇一区二区| 亚洲精品电影| 色涩成人影视在线播放| 国产精品一线| 国产成人午夜片在线观看高清观看 | 欧美国产视频一区| 欧美美乳视频| 国产91一区二区三区| 欧美特黄色片| 国产成人精品一区二区在线| 爱啪视频在线观看视频免费| 久久国产精品影片| 98在线视频| 亚洲色图狂野欧美| 欧美熟妇交换久久久久久分类| 欧美精品电影在线播放| 高潮无码精品色欲av午夜福利| 亚洲电影在线播放| 欧美成人综合色| 成人欧美一区二区三区小说| 欧美人妻一区二区三区| www久久精品| 国产精品无码网站| 不卡的av网站| 97人妻精品一区二区三区免费| 国产一区二区免费在线| 黄色永久免费网站| 日韩在线一二三区| 亚洲精品乱码久久久久久自慰| 最新亚洲一区| 国产真人做爰毛片视频直播| 亚洲五月综合| 亚洲一区 在线播放| 51精产品一区一区三区| 一区二区三区在线视频看| 波多野结衣的一区二区三区| 视频一区二区在线| 欧美亚洲高清| 亚洲mv在线看| 91欧美在线| 浴室偷拍美女洗澡456在线| 婷婷另类小说| 免费的av在线| 亚洲视频狠狠| www精品久久| 蘑菇福利视频一区播放| 国产成人无码一二三区视频| 三级不卡在线观看| 丁香婷婷激情网| 捆绑变态av一区二区三区| 日本一二三四区视频| 国产精品白丝av| 国产白袜脚足j棉袜在线观看 | 欧美乱妇23p| 国产日韩欧美一区二区东京热| 欧美一区二区视频网站| 精品人妻午夜一区二区三区四区 | 求av网址在线观看| 久久91超碰青草是什么| av中文在线资源库| 日本中文字幕久久看| 欧美aaaaaaaa| 俄罗斯精品一区二区| 亚洲a级精品| 亚洲欧美综合一区| 亚洲激情综合| 一区二区在线播放视频| 国产成人综合亚洲网站| 三级电影在线看| 国产精品久久久久久久久久免费看 | 91超碰caoporn97人人| 69堂免费精品视频在线播放| 97netav| 羞羞色国产精品网站| 一区二区三区三区在线| 激情综合激情| 亚洲天堂av线| 成人一区二区三区在线观看| 亚洲精品国产精品国自产网站| 亚洲精品视频免费观看| 无码视频一区二区三区| 日韩三级在线观看| 国产一区二区三区不卡在线| 久久亚洲精品视频| 第84页国产精品| 5566中文字幕一区二区| 国产99久久精品一区二区300| 欧美少妇在线观看| 久久久久欧美精品| 香蕉视频xxx| 国产欧美日韩麻豆91| 日韩xxxxxxxxx| 在线成人av网站| 黄色大片在线免费观看| 欧美人与性动交a欧美精品| 亚洲精品一区三区三区在线观看| 国产精品久久久久久久小唯西川 | 中文字幕九色91在线| а_天堂中文在线| 91精品啪aⅴ在线观看国产| 蜜乳av综合| 国产日韩亚洲欧美在线| 久久99最新地址| 一色道久久88加勒比一| 无码av免费一区二区三区试看 | 中文字幕亚洲精品在线| 欧美一区二区不卡视频| 日本中文字幕在线视频| 日本中文字幕久久看| 欧美爱爱网站| 免费视频爱爱太爽了| 国产一区二区不卡在线| 亚洲综合第一区| 欧美亚洲动漫另类| 免费黄色片在线观看| 97香蕉超级碰碰久久免费软件| 日韩中文字幕无砖| 2021狠狠干| 国产一区二三区| 色偷偷www8888| 欧美日韩一区小说| av在线免费观看网| 国产精品精品久久久| 国产精品免费大片| 日韩网址在线观看| 久久亚洲欧美国产精品乐播| 国产免费av一区二区| 亚洲国产精品资源| 天堂√中文最新版在线| 狠狠爱一区二区三区| 国产精品红桃| 性感美女一区二区三区| 亚洲综合无码一区二区| 亚洲国产www| 欧美激情精品久久久久久大尺度| 欧洲精品99毛片免费高清观看| 四虎4hu永久免费入口| 国产美女精品人人做人人爽| 国产午夜手机精彩视频| 日韩亚洲电影在线| 欧美jizzhd69巨大| 91精品黄色| 亚洲黄页一区| 我和岳m愉情xxxⅹ视频| 欧美亚洲国产一区二区三区 | 亚洲影院天堂中文av色| 日韩精品一区二区三区久久| 久久久久久久久久电影| 中文在线免费看视频| 日韩专区中文字幕| 免费观看性欧美大片无片| 日韩视频免费播放| 久久久不卡网国产精品一区| 亚洲精品一区二三区| 久久精品成人欧美大片古装| 日本在线成人| 国产91在线视频观看| 中文字幕av在线一区二区三区| 国产精品久久久国产盗摄| 欧美精品videos另类日本| 天堂av一区二区三区在线播放| 中文字幕在线导航| 亚洲欧美在线观看| 国产香蕉在线观看| 国产精品白嫩美女在线观看| 亚洲大全视频| 国产精品成人无码专区| 91福利资源站| av在线播放国产| 欧美日韩国产免费一区二区三区| 久久激五月天综合精品| 日本系列第一页| 伊人青青综合网站| 91精品入口| 999在线免费视频| 亚洲综合图片区| 国产原创av在线| 国产精品国色综合久久| 日韩高清一区二区| 欧美成人精品一区二区免费看片 | 天天操天天干天天操天天干| 欧美一级免费大片| 欧美三级网址| 喜爱夜蒲2在线| 国产日韩精品视频一区| 成人av手机在线|