老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務

MySQL中的插入意向鎖是什么

今天小編給大家分享一下MySQL中的插入意向鎖是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

仁壽網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選成都創(chuàng)新互聯(lián)公司

Insert Intention Lock,中文我們也稱之為插入意向鎖。

1. 為什么需要插入意向鎖

我們之前已經(jīng)有 Gap Lock 了,Gap Lock 可以幫我們在一定程度上解決幻讀問題,但是,之前的似乎有點問題。

假設我有如下一張表:

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `age` int(11) NOT NULL,  PRIMARY KEY (`id`),
  KEY `age` (`age`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

id 是主鍵自增;age 是一個普通索引,現(xiàn)在表中有如下數(shù)據(jù):

MySQL中的插入意向鎖是什么

假設我想執(zhí)行如下的插入 SQL:

begin;insert into user(username,age) values('wangwu',95);

注意,這個 SQL 執(zhí)行了但是事務還沒有提交。

按照我們之前學習的關于 Gap Lock 的知識分析一下,此時間隙鎖的范圍是 (89,99),意思是這個范圍的 age 都不可以插入。

如果是這樣的話,小伙伴們會發(fā)現(xiàn)數(shù)據(jù)插入的效率可就太低了,很容易發(fā)生鎖沖突,那么怎么辦?

我們今天要介紹的插入意向鎖就是用來解決這個問題的。

2. 什么是插入意向鎖

我們來看看 MySQL 官網(wǎng)的介紹:

An insert intention lock is a type of gap lock set by INSERT operations prior to row insertion. This lock signals the intent to insert in such a way that multiple transactions inserting into the same index gap need not wait for each other if they are not inserting at the same position within the gap. Suppose that there are index records with values of 4 and 7. Separate transactions that attempt to insert values of 5 and 6, respectively, each lock the gap between 4 and 7 with insert intention locks prior to obtaining the exclusive lock on the inserted row, but do not block each other because the rows are nonconflicting.

大致翻譯下一下就是這樣:

插入意向鎖是一種在 INSERT 操作之前設置的一種間隙鎖,插入意向鎖表示了一種插入意圖,即當多個不同的事務,同時往同一個索引的同一個間隙中插入數(shù)據(jù)的時候,它們互相之間無需等待,即不會阻塞(要是單純按照之前間隙鎖的理論,必須要等一個間隙鎖釋放了,下一個事務才可以往相同的間隙處插入數(shù)據(jù))。假設有值為 4 和 7 的索引記錄,現(xiàn)在有兩個事務,分別嘗試插入值為 5 和 6 的記錄,在獲得插入行的排他鎖之前,每個事務使用插入意向鎖鎖定 4 和 7 之間的間隙,但是這兩個事務不會相互阻塞,因為行是不沖突的。

這就是插入意向鎖。

3. 實踐

小伙伴們注意,松哥之前和大家聊 Gap Lock,說過這個是可重復讀(REPEATABLE READ)這個隔離級別下特有的產(chǎn)物,那么現(xiàn)在 Insert Intention Lock 是一種特殊的 Gap Lock,當然也是在可重復讀這個隔離級別下生效。

接下來我們通過兩個個簡單的案例來演示一下插入意向鎖。

3.1 案例一

我們的表結構以及數(shù)據(jù)和第一小節(jié)一致。

首先我們在會話 A 中,執(zhí)行如下代碼:

MySQL中的插入意向鎖是什么

現(xiàn)在會話 A 中的事務沒有提交。

接下來我們在會話 B 中,也執(zhí)行一個插入操作:

MySQL中的插入意向鎖是什么

我們發(fā)現(xiàn)會話 B 也可以正常執(zhí)行,沒有發(fā)生阻塞。

這說明,兩個插入意向鎖之間是兼容的,可以共存的。

3.2 案例二

我們再來看一個不兼容的例子。

首先在會話 A 中執(zhí)行如下 SQL 查詢 age 大于 80 的記錄,并添加排他鎖:

MySQL中的插入意向鎖是什么

接下來在會話 B 中,執(zhí)行如下代碼插入一行數(shù)據(jù):

MySQL中的插入意向鎖是什么

小伙伴們看到,這個操作會被阻塞!阻塞的原因在于,插入意向鎖和排他鎖之間是互斥的。

趁著發(fā)生阻塞的這會,在會話 C 中,我們通過在前面文章中所使用的 show engine innodb status\G 指令,來查看下加鎖的情況,重點看 TRANSACTION 節(jié)點:

MySQL中的插入意向鎖是什么

在輸出的內容中,紅色框選中的地方,清楚的表明了插入意向鎖的存在。

以上就是“MySQL中的插入意向鎖是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標題:MySQL中的插入意向鎖是什么
瀏覽地址:http://www.xueling.net.cn/article/psehpp.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 欧美特级黄色大片 | 亚洲成精品自拍 | 无码少妇一区二区三区 | 一级片的网址 | 不卡视频在线免费观看 | 色先锋aa成人 | 成人qvod免费观看影院 | 久久久久久亚洲国产 | 兔兔精品国产乱码久久久久 | VIDEOS日本熟妇人妻多毛 | 国产福利一区二区三区视频 | 2021国产亚洲日韩在线 | 久久久激情网 | 日韩理论片中文字幕 | 青娱乐久草 | 澳门精品无码一区二区三区 | 国产亚洲一区二区三区 | 无码粉嫩虎白一线天在线观看 | 少妇一级淫片中文字幕 | 亚洲品牌自拍一品区9 | 国产精品美女久久久久av爽 | 午夜成熟看A级毛片 | 亚洲国产精品无码二区 | 成人免费毛片内射美女-百度 | a级毛片免费观看片 | 亚洲AV无码欧洲AV无码网站 | 欧美日韩一区二区三区视频播放 | 国产一区二区二 | 欧洲一卡2卡三卡4卡乱码毛1 | 欧美大黑BBB| 呻吟求饶的人妻中文字幕 | 91在线播放观看 | 国产一区在线导航 | 亚洲视频国产一区 | 久操久操久操 | 精品福利一区二区三区免费视频 | 精品一区二区三区影院在线午夜 | 精品精品国产三级a∨在线 麻豆传媒免费视频 | 色情码一区久久爱 | 免费观看性欧美大片无片 | av不卡免费在线 |