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

MySQL 核心模塊揭秘 — 什么時候釋放鎖?

數據庫 MySQL
事務執行過程中加的表鎖,都要等到提交或者回滾即將完成時才釋放(手動加的表鎖除外)。事務執行過程中加的行鎖,根據事務隔離級別的不同,釋放時機不同。

1. 概述

InnoDB 事務執行過程中,加表鎖或者行鎖之后,釋放鎖最常見的時機是事務提交或者回滾即將完成時。

因為事務的生命周期結束,它加的鎖的生命周期也隨之結束。

有一種情況,加鎖只是權宜之計,臨時為之。如果這種鎖也要等到事務提交或者回滾即將完成時才釋放,阻塞其它事務的時間也可能更長,這就有點不合理了。所以,這種鎖會在事務運行過程中及時釋放。

還有一種情況,雖然是在事務提交過程中釋放鎖,但是并不會等到提交即將完成時才釋放,而是在二階段提交的 prepare 階段就提前釋放。

最后,有點特殊的就是 AUTO-INC 鎖了。

2. 不匹配 where 條件

我們先來看看只是權宜之計的加鎖場景。

select、update、delete 語句執行過程中,不管 where 條件是否命中索引,也不管是等值查詢還是范圍查詢,只要掃描過的記錄,都會加行鎖。

和 update、delete 不一樣,select 只在需要加鎖時,才會按照上面的邏輯加鎖。

可重復讀(REPEATABLE-READ)、可串行化(SERIALIZABLE)兩種隔離級別,只要加了鎖,不管是表鎖還是行鎖,都要等到事務提交或者回滾即將完成時才釋放(手動加的表鎖除外)。這就是我們前面說的釋放鎖最常見的時機了。

讀未提交(READ-UNCOMMITTED)、讀已提交(READ-COMMITTED)兩種隔離級別,如果發現記錄不匹配 where 條件,會及時釋放行鎖。這又分為兩種情況。

情況 1,如果部分或者全部 where 條件下推到了存儲引擎,InnoDB 每讀取一條記錄,都會判斷記錄是否匹配下推的 where 條件。

情況 2,server 層每次收到 InnoDB 返回的一條記錄,也會判斷記錄是否匹配 server 層的 where 條件。

以上兩種情況,只要記錄不匹配 where 條件,就會馬上釋放當前 SQL 語句對記錄加的行鎖(其實有個例外情況,稍后介紹)。

這里釋放行鎖,只會釋放不匹配 where 條件的這一條記錄上的行鎖,過程也比較簡單,就是把行鎖結構的 bitmap 內存區域中,這條記錄對應的位設置為 0。

如果有其它事務正在等待獲得這條記錄的行鎖,還會根據行鎖的授予規則,給其它事務授予鎖。

前面提到有一個例外情況,現在,該它出場了。

如果事務對某條記錄加行鎖,沒有立即獲得鎖,而是進入了鎖等待狀態,等其它事務釋放鎖之后才獲得鎖。InnoDB 或者 server 層發現這條記錄不匹配 where 條件,并不會釋放它的行鎖。

這是為什么呢?

因這經過鎖等待狀態之后才獲得的行鎖,事務就不知道是哪條 SQL 語句執行時給加的行鎖了,所以,即使發現記錄不匹配 where 條件,也不會釋放它的行鎖。

3. prepare 階段

讀未提交(READ-UNCOMMITTED)、讀已提交(READ-COMMITTED)兩種隔離級別下:

  • select、update、delete 語句全表掃描、索引范圍掃描過程中,只會對索引記錄加普通記錄鎖,不會加間隙鎖和 Next-Key 鎖。
  • 外鍵約束檢查、重復值檢查這兩個場景下,還是會對索引記錄加間隙鎖或者 Next-Key 鎖的。

這兩種隔離級對索引記錄前面間隙的鎖定,不需要等到事務提交或者回滾即將完成時才釋放,在事務二階段提交的 prepare 階段就可以提前釋放。

Next-Key 鎖既鎖定索引記錄本身,又鎖定索引記錄前面的間隙。

如果釋放索引記錄的 Next-Key 鎖,就意味著釋放了索引記錄本身和前面間隙的鎖定,這顯然是不行的,因為索引記錄本身的鎖定,要等到事務提交或者回滾即將完成時,才能釋放。

那么,Next-Key 鎖要怎么釋放?

稍安勿躁,我們一起來看。

釋放索引記錄前面間隙的鎖定,需要遍歷事務對象的 trx_locks 鏈表,遍歷過程中,每次取一個鎖結構(可能是表鎖結構或者行鎖結構)。

如果鎖結構對應的是間隙鎖,直接釋放索引記錄上的間隙鎖,主要流程如下:

  • 從事務對象的 trx_locks 鏈表中刪除行鎖結構。
  • 從 rec_hash 的數組中找到鎖結構所在的行鎖結構鏈表,然后從鏈表中刪除鎖結構。
  • 鎖結構的 bitmap 內存區域中,可能有一個或者多個位的值為 1,這些位對應的記錄都被加了間隙鎖。如果有其它事務正在等待獲得這些記錄上的行鎖,根據行鎖的授予規則,給這些事務授予鎖。

如果鎖結構對應的是 Next-Key 鎖,只釋放索引記錄前面間隙的鎖定,保留索引記錄本身的鎖定,主要流程如下:

  • 給鎖結構的 type_mode 屬性加上 LOCK_REC_NOT_GAP 標志,也就是直接把 Next-Key 鎖變成了普通記錄鎖。
  • 鎖結構的 bitmap 內存區域中,可能有一個或者多個位的值為 1,這些位對應的記錄都被加了 Next-Key 鎖,現在都變成了普通記錄鎖。如果有其它事務想往這些記錄前面的間隙插入記錄被阻塞了,現在就可以根據行鎖的授予規則,給這些事務授予插入意向鎖了。

4. 事務提交或回滾

事務加行鎖的共享鎖、排他鎖之前,會分別加表級別的意向共享鎖、意向排他鎖,這兩種表鎖都要到事務提交或者回滾即將完成時才釋放。

事物加的所有行鎖,除了讀未提交(READ-UNCOMMITTED)、讀已提交(READ-COMMITTED)兩種隔離級別已經釋放的不匹配 where 條件的記錄上的行鎖、索引記錄前面間隙的鎖定之外,剩下的行鎖,都要等到事務提交或者回滾即將完成時才釋放。

事務提交或者回滾事務即將完成時,釋放表鎖和行鎖需要遍歷 trx_locks 鏈表,遍歷過程中,每次取一個鎖結構。

對于行鎖結構,釋放鎖的主要流程如下:

  • 從事務對象的 trx_locks 鏈表中刪除行鎖結構。
  • 從 rec_hash 的數組中找到鎖結構所在的行鎖結構鏈表,然后從鏈表中刪除行鎖結構。
  • 鎖結構的 bitmap 內存區域中,可能有一個或者多個位的值為 1,這些位對應的記錄都被加了某種行鎖。如果有其它事務正在等待獲得這些記錄上的行鎖,根據行鎖的授予規則,給這些事務授予鎖。

對于表鎖結構,釋放鎖的主要流程如下:

  • 從事務對象的 trx_locks 鏈表中刪除表鎖結構。
  • 從表對象的 locks 鏈表刪除表鎖結構。
  • 如果有其它事務正在等待獲得這個表的表鎖,根據表鎖的授予規則,給這些事務授予鎖。

5. AUTO-INC 鎖

把 AUTO-INC 鎖單獨拿出來說,是因為它有點特殊。

前面介紹 InnoDB 表鎖時,我們介紹過,AUTO-INC 鎖有兩種類型,一種是輕量鎖,這其實只是個互斥量。

另一種才是真正的表級別的 AUTO-INC 鎖,它會創建表鎖結構,和表級別的意向共享鎖、意向排他鎖一樣,都屬于表鎖。

AUTO-INC 鎖的這兩種類型,釋放時機不同。

輕量鎖,用完就釋放,也就是 insert 或者 update 語句獲取到自增列的自增值之后,就可以釋放了。

因為這種類型,只是個互斥量,釋放也很簡單,調用釋放互斥量的方法就可以了。

此時,可能有其它事務正在等待獲得這個表的輕量 AUTO-INC 鎖,也就是等待獲得這個互斥量,由操作系統決定哪個事務能獲得這個互斥量。

真正的表級別的 AUTO-INC 鎖,要等到加鎖的 SQL 語句執行完成才釋放,主要流程如下:

  • 從事務對象的 autoinc_locks 數組中刪除表鎖結構。
  • 從事務對象的 trx_locks 鏈表中刪除表鎖結構。
  • 從表對象的 locks 鏈表中刪除表鎖結構。
  • 如果有其它事務正在等待獲得這個表的 AUTO-INC 鎖,根據表鎖的授予規則,給這些事務授予鎖。

6. 總結

事務執行過程中加的表鎖,都要等到提交或者回滾即將完成時才釋放(手動加的表鎖除外)。

事務執行過程中加的行鎖,根據事務隔離級別的不同,釋放時機不同。

可重復讀(REPEATABLE-READ)、可串行化(SERIALIZABLE)兩種隔離級別,事務加的所有行鎖,都要等到提交或者回滾即將完成時才釋放。

讀未提交(READ-UNCOMMITTED)、讀已提交(READ-COMMITTED)兩種隔離級別,事務加的行鎖,釋放時機不同。

  • 對于不匹配 where 條件的記錄,發現不匹配之后,server 層或者 InnoDB 就會釋放這些記錄的行鎖。
  • 對于間隙鎖或者 Next-Key 鎖,在二階段提交的 prepare 階段,會釋放記錄前面間隙的鎖定,保留記錄本身的鎖定。
  • 剩余未釋放的行鎖,都要等到事務提交或者回滾即將完成時才釋放。

AUTO-INC 鎖有兩種類型,對應兩種釋放時機:

  • 輕量鎖,用完就釋放。
  • 真正的表級別的 AUTO-INC 鎖,加鎖的 SQL 語句執行完成時釋放。
責任編輯:武曉燕 來源: 愛可生開源社區
相關推薦

2024-08-28 08:50:11

MySQL核心模塊

2024-10-16 11:11:51

隔離InnoDB死鎖

2024-06-05 11:49:33

2024-05-15 09:05:42

MySQL核心模塊

2024-04-03 08:20:53

MySQL核心模塊

2024-09-04 08:44:18

MySQL核心模塊

2024-10-30 10:38:08

2020-05-12 11:25:50

MySQLES數據庫

2024-05-29 10:17:01

2010-11-09 13:58:03

SQL Server鎖

2024-03-27 13:33:00

MySQLInnoDB事務

2023-06-06 16:54:00

2017-05-15 09:55:07

2015-07-08 15:55:01

NSStringcopystrong

2017-06-29 08:45:06

MySQLNOT INNOT EXISTS

2012-09-24 10:20:39

JavaScriptJS

2013-11-28 16:03:24

2024-08-05 01:22:16

2022-05-19 10:27:34

機器學習人工智能

2017-06-28 15:06:51

PythonLambda函數
點贊
收藏

51CTO技術棧公眾號

一区二区www| 爱爱免费小视频| 日本伦理一区二区| 成人国产精品免费观看视频| 国内精品久久久久影院优| 欧美丰满少妇人妻精品| 久久福利在线| 亚洲无线码一区二区三区| 免费成人看片网址| 国产欧美熟妇另类久久久| 在线日本成人| 中文字幕日韩av| 亚洲美女高潮久久久| 在线能看的av网址| 亚洲日本va在线观看| 国产一区二区精品在线| 4438国产精品一区二区| 久久久久久久久久久久久久| 亚洲国产欧美一区二区丝袜黑人| 亚洲xxxxx电影| 久久丫精品久久丫| 精品国产精品国产偷麻豆| 欧美午夜一区二区三区| 日韩一区二区高清视频| 懂色av中文在线| 国产iv一区二区三区| 国产精品久久久久不卡| 精品成人久久久| 欧美福利电影在线观看| 国产一区二区三区视频免费| aaa黄色大片| 成人在线视频免费| 欧美性xxxxxxx| 成人免费a级片| 黄色小网站在线观看| 久久久天堂av| 精品国产乱码久久久久久108| 国产亚洲欧美精品久久久www| 成人免费91| 一本久久a久久免费精品不卡| 久久av一区二区| 超碰人人人人人人| 国产一区二区不卡| 国产精品一区久久久| 国产精品一区无码| 国产日韩综合| 午夜精品一区二区三区在线| 2025国产精品自拍| 午夜精品一区二区三区国产 | 免费xxxx性欧美18vr| 欧美极品在线视频| 欧美人妻一区二区| 欧美日本免费| 欧美日韩高清在线观看| 国产成人av免费在线观看| 日韩伦理一区| 色噜噜狠狠狠综合曰曰曰| 国产综合精品久久久久成人av| 成人黄色免费网站| 91久久精品午夜一区二区| 无码精品国产一区二区三区免费| 成年人在线免费观看| 久久久久国产精品麻豆ai换脸| 国产精品久久久久久久av大片| 男人天堂资源网| 成人久久综合| 日韩最新av在线| 9999热视频| 欧美另类视频| 久久久噜噜噜久久中文字免| 日本中文字幕免费观看| 一本色道久久综合| 日韩av电影在线免费播放| 国产免费一区二区三区四区五区| 亚洲天堂一区二区三区四区| 欧美另类xxx| 国产又黄又爽又无遮挡| 国自产拍偷拍福利精品免费一| 中文精品99久久国产香蕉| 手机看片国产日韩| 91精品久久久久久久蜜月| 久久久91精品国产| 久久成人在线观看| 亚洲欧美日韩专区| 国产精品丝袜久久久久久高清| 人人干人人干人人干| 蜜桃久久av| 91精品久久久久久久久久 | 99re66热这里只有精品8| 日韩有码在线播放| 精品无码久久久久| 久热精品视频| 亚洲jizzjizz日本少妇| 人妻精品一区二区三区| 国产日韩欧美在线一区| 老汉色影院首页| 欧产日产国产精品视频| 欧美日韩综合在线| 性生活在线视频| 一区二区三区四区在线看 | 国产主播福利在线| 亚洲视频每日更新| 欧美又粗又长又爽做受| 午夜欧美巨大性欧美巨大| 777奇米四色成人影色区| 日韩免费高清一区二区| 91亚洲国产高清| 亚洲2020天天堂在线观看| 亚洲无码久久久久久久| 99久久精品免费| 亚洲免费视频播放| 向日葵视频成人app网址| 欧美一级高清片| 97在线观看免费视频| 欧美日韩精品一本二本三本 | 亚洲xxxx3d动漫| 99视频精品免费观看| 成人午夜激情免费视频| 欧美人体大胆444www| 亚洲免费观看高清完整| 亚洲最大综合网| 免费日韩一区二区三区| 欧美理论电影在线观看| 一区二区三区精彩视频| www.欧美精品一二区| 在线观看免费黄色片| 主播大秀视频在线观看一区二区| 欧美日韩国产a| 欧美老熟妇乱大交xxxxx| 亚洲福利精品| 国产91视觉| av免费看在线| 欧美精三区欧美精三区| 国产一二三四五区| 免费在线观看成人av| 国产麻豆日韩| caoporn97在线视频| 欧美日韩国产影片| 成年人看的免费视频| 美女久久网站| 欧美日本国产精品| 成人爱爱网址| 亚洲久久久久久久久久| 99久在线精品99re8热| 不卡高清视频专区| 日韩人妻无码精品久久久不卡| 欧美激情网站| 精品日韩成人av| 欧美丰满艳妇bbwbbw| 极品美女销魂一区二区三区 | 欧美性受xxx| 黄色av免费观看| 一区二区高清在线| 精品伦一区二区三区| 国产精品videossex久久发布| 欧美亚洲成人精品| 五月婷婷丁香六月| 色综合一区二区| 久久精品成人av| 日日噜噜夜夜狠狠视频欧美人| 国产精品中文字幕在线| 日韩精品毛片| 91精品国产免费| 欧美黑人性猛交xxx| 国产精品538一区二区在线| 日韩精品免费一区| 视频精品国内| 亚州欧美日韩中文视频| 撸视在线观看免费视频| 在线观看国产91| 三级黄色在线观看| 国产成人免费xxxxxxxx| 日本xxxxxxxxxx75| 九九热爱视频精品视频| 国产美女久久久| av网址在线| 亚洲精品一区二区三区四区高清| 蜜桃av免费观看| 国产一区日韩二区欧美三区| 精品人妻大屁股白浆无码| 久久夜色精品国产噜噜av小说| 日韩在线观看高清| 国产aⅴ一区二区三区| 五月天精品一区二区三区| 国产av自拍一区| 国产一区二区在线免费观看| 欧美久久在线观看| 国产传媒欧美日韩成人精品大片| 午夜精品久久17c| 国产一区电影| 日韩精品综合一本久道在线视频| 天堂av免费在线| 高清不卡一二三区| 亚洲男人天堂色| 欧美精品18| 日韩福利在线| 国产精品45p| 国产精品久久久久久久美男| sm国产在线调教视频| 日韩精品高清在线| 国产美女精品视频国产| 亚洲成人免费在线| 激情高潮到大叫狂喷水| 97精品超碰一区二区三区| 中文字幕中文在线| 亚洲欧美成人综合| 91精品国产毛片武则天| 国产最新精品| 精品国产91亚洲一区二区三区www| 三级资源在线| 欧美一二三四区在线| 天堂中文在线网| 尤物视频一区二区| 青青草华人在线视频| 99精品视频在线免费观看| 91精产国品一二三产区别沈先生| 天天综合网网欲色| 蜜桃视频成人| 成人性生交大片免费看中文视频| 久久久久国产视频| 欧美猛烈性xbxbxbxb| 日韩麻豆第一页| 亚洲国产精品久久久久久6q| 日本高清不卡视频| 日韩精品在线观看免费| 亚洲免费观看高清完整版在线 | 91理论电影在线观看| 亚洲一二三av| 老司机精品视频在线| 欧美黄色一级片视频| 一本久道久久久| www.国产在线视频| 国产精品草草| 97中文字幕在线| 欧美三区视频| 精品嫩模一区二区三区| 日韩精品诱惑一区?区三区| 蜜桃av久久久亚洲精品| 女仆av观看一区| 国产v亚洲v天堂无码| 一区二区视频| 91久色国产| 精品国产亚洲日本| 91久久精品国产| av日韩久久| 91免费高清视频| 国产日韩中文在线中文字幕| 91精品啪aⅴ在线观看国产| 成人18视频在线观看| 国产精品视频yy9099| se69色成人网wwwsex| 国产精品欧美激情| 欧美性aaa| 91久久精品视频| 国产精品一站二站| 不卡视频一区二区| 一区二区三区视频免费视频观看网站 | 少妇被狂c下部羞羞漫画| 国产不卡一区视频| 国产白袜脚足j棉袜在线观看| 青娱乐精品在线视频| 黑森林精品导航| 久久黄色级2电影| 一区二区三区国产好的精华液| 免费视频一区| 999在线免费视频| 黑人巨大精品欧美黑白配亚洲| 精品国产免费av| 西西人体一区二区| 国产一级特黄a大片免费| 精品一区二区久久| 丰满少妇一区二区三区专区| 成人免费福利片| 中文字幕丰满乱子伦无码专区| 粉嫩一区二区三区性色av| 国产chinese中国hdxxxx| 久久这里只有精品视频网| 老头老太做爰xxx视频| 国产精品免费免费| 九九精品视频免费| 亚洲第一在线综合网站| 亚洲综合久久网| 欧美日韩精品一区二区三区四区| 天堂网一区二区三区| 欧洲精品在线观看| 一级特黄aaaaaa大片| 精品福利一二区| 国产二区在线播放| 欧美乱妇高清无乱码| 竹内纱里奈兽皇系列在线观看| 国外成人性视频| 成人一区福利| 91人人爽人人爽人人精88v| 欧美成人专区| 亚洲欧洲日韩综合二区| 激情综合在线| 污视频网址在线观看| 成人av免费网站| 天天色影综合网| 婷婷开心久久网| 国产又黄又粗又猛又爽| 亚洲精品电影在线观看| 国产精品扒开做爽爽爽的视频| 色妞久久福利网| 国产污视频在线播放| 91精品国产自产在线老师啪| 综合亚洲色图| 99re6这里有精品热视频| 久久精品午夜| 手机在线成人av| 亚洲人成在线播放网站岛国| 无码人妻熟妇av又粗又大| 欧美不卡在线视频| 日本激情视频在线观看| 2025国产精品视频| 91精品尤物| 一区二区三区av在线| 久久综合图片| 女~淫辱の触手3d动漫| 亚洲大型综合色站| 国产农村老头老太视频| 一区二区欧美激情| 松下纱荣子在线观看| 亚洲综合中文字幕68页| 成人aaaa| 国产1区2区在线| 99精品1区2区| 国产福利久久久| 欧美一级日韩一级| 黄色免费网站在线| 国产精品免费网站| 视频一区中文| 欧美牲交a欧美牲交aⅴ免费真| 久久国内精品自在自线400部| 在线播放免费视频| 欧美国产日韩一二三区| 国产91国语对白在线| 日韩av在线不卡| 黄色aa久久| 极品尤物一区二区三区| 99在线精品视频在线观看| 中国xxxx性xxxx产国| 亚洲乱码中文字幕| 国产高清在线免费| 久久艳片www.17c.com| 日日夜夜亚洲| 一区二区三区|亚洲午夜| 久久国产欧美日韩精品| 一级片黄色录像| 在线播放国产精品二区一二区四区 | 国产三区视频在线观看| 成人在线视频网| 一个色综合网| 亚洲熟妇一区二区| 亚洲aaa精品| 日漫免费在线观看网站| 日本精品中文字幕| 欧美日韩黑人| 日本在线播放一区二区| 亚洲欧美另类在线| 国产高清免费观看| 国模精品系列视频| 亚洲+变态+欧美+另类+精品| 国产精品免费观看久久| 国产婷婷色一区二区三区四区| 欧美日韩精品亚洲精品| 精品久久久久99| av不卡高清| 欧美日韩综合精品| 美女精品一区二区| 少妇久久久久久被弄高潮| 亚洲成人久久一区| 全亚洲第一av番号网站| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲精选在线| 巨胸大乳www视频免费观看| 欧洲人成人精品| 黄页视频在线播放| 国产精品三区四区| 日韩精品欧美成人高清一区二区| 日韩综合第一页| 色网综合在线观看| 免费在线看黄网站| 狠狠色噜噜狠狠狠狠色吗综合| 欧美国产三级| 人妻丰满熟妇av无码久久洗澡| 一区二区三区日韩欧美| 天天综合天天综合| 国产精选久久久久久| 激情综合自拍| 综合 欧美 亚洲日本| 精品欧美一区二区久久| 在线看片福利| 99视频精品全部免费看| 久久影院视频免费| 午夜精品久久久久久久99老熟妇| 欧美成人中文字幕在线| 亚州综合一区| 亚洲av毛片在线观看| 91久久精品一区二区三区|