千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當前位置:首頁  >  技術(shù)干貨  > mysql 非少數(shù)索引的等值查詢?yōu)槭裁匆觛ap鎖?

mysql 非少數(shù)索引的等值查詢?yōu)槭裁匆觛ap鎖?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-13 16:33:11 1697185991

一、mysql 非少數(shù)索引的等值查詢?yōu)槭裁匆觛ap鎖

mysql 中非少數(shù)索引使用的也是 B+ 樹來組織數(shù)據(jù)結(jié)構(gòu)。

假設(shè) id 的索引結(jié)構(gòu)在葉子節(jié)點從左到右的排列順序是 1 1 2 2 4 5,如果我們只使用 記錄鎖來鎖住索引 2,因為索引中有兩個 2,所以這兩個 2 都會被加上一個記錄鎖。

現(xiàn)在假設(shè)有另外一個事務(wù),它執(zhí)行

insert into table? values(2);

也就是說,另外一個事務(wù)需要添加一條記錄,并且 id=2,因為上面我們針對 兩個 2 加的是兩個記錄鎖,所以這個事務(wù)可以去執(zhí)行。

為了避免幻讀,此時要使用記錄鎖鎖住兩個 2 的主鍵索引,另外兩個 2 的非少數(shù)索引也必須鎖住,然后再鎖住三個區(qū)間。

我們使用案例驗證下這些鎖:

create table test.testtable

(

??? id??? bigint auto_increment primary key,

??? age int(20)???? null

);

create index age_index on test.testtable (age);

insert into testtable? values(1,1);

insert into testtable? values(3,1);

insert into testtable? values(5,2);

insert into testtable? values(7,2);

insert into testtable? values(9,4);

insert into testtable? values(13,5);

begin;

select * from testtable where age = 2 for update;
名列前茅個是 意向排他鎖,這個不分析了。

第二個和第三個是 next-key 鎖,鎖住的是(1,2] 和 (2,2]。

第四個和第五個是記錄鎖,鎖住兩個 2 的主鍵索引。

第六個是間隙鎖,鎖?。?,4)區(qū)間。

延伸閱讀:

二、字符集(Character set)是什么

是多個字符(英文字符,漢字字符,或者其他國家語言字符)的集合,字符集種類較多,每個字符集包含的字符個數(shù)不同。

特點:

①字符編碼方式是用一個或多個字節(jié)表示字符集中的一個字符

②每種字符集都有自己特有的編碼方式,因此同一個字符,在不同字符集的編碼方式下,會產(chǎn)生不同的二進制

常見字符集:

ASCII字符集:基于羅馬字母表的一套字符集,它采用1個字節(jié)的低7位表示字符,高位始終為0。

LATIN1字符集:相對于ASCII字符集做了擴展,仍然使用一個字節(jié)表示字符,但啟用了高位,擴展了字符集的表示范圍。

GBK字符集:支持中文,字符有一字節(jié)編碼和兩字節(jié)編碼方式。

UTF8字符集:Unicode字符集的一種,是計算機科學(xué)領(lǐng)域里的一項業(yè)界標準,支持了所有國家的文字字符,utf8采用1-4個字節(jié)表示字符。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Java怎么注解實體類實現(xiàn)數(shù)據(jù)庫類型與Java類型對應(yīng)映射?

一、Java注解實體類實現(xiàn)數(shù)據(jù)庫類型與Java類型對應(yīng)映射的方法1、選擇合適的持久化框架Java中有多個持久化框架可供選擇,如Hibernate、MyBatis等...詳情>>

2023-10-13 17:57:42
數(shù)據(jù)庫事務(wù)完成后結(jié)果返回給客戶端前連接斷開了會發(fā)生什么?

一、數(shù)據(jù)庫事務(wù)完成后結(jié)果返回給客戶端前連接斷開了會發(fā)生的情況1、事務(wù)提交失敗如果在事務(wù)提交完成之前連接斷開,數(shù)據(jù)庫可能無法將事務(wù)結(jié)果持...詳情>>

2023-10-13 17:52:47
mysql.sock文件是怎么起作用的?

一、mysql.sock文件的工作原理在MySQL中,mysql.sock文件是用于實現(xiàn)本地套接字(socket)連接的一種機制。它在Unix或類Unix系統(tǒng)上使用,允許客...詳情>>

2023-10-13 17:39:11
oracle為什么要繼續(xù)開發(fā)mysql?

一、oracle為什么要繼續(xù)開發(fā)mysql應(yīng)該是之前收購的時候有協(xié)議吧,而且,本身面向的客戶也不太一樣。oracle也有不付費的用戶,mysql有社區(qū)版,但...詳情>>

2023-10-13 17:27:29
低代碼平臺的開發(fā),數(shù)據(jù)庫是怎么選擇的?

一、低代碼平臺的開發(fā),數(shù)據(jù)庫是怎么選擇的如果你選擇的低代碼開發(fā)平臺支持多種數(shù)據(jù)庫,那就選你最熟悉的吧。除了oracle這種賊貴的,和postgres...詳情>>

2023-10-13 17:25:32
快速通道
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
日韩动漫一区二区 | 色妺妺免费AV在线 | 在线播放亚洲精品 | 亚洲中文字幕永久在线不卡 | 五月天激情久久 | 亚洲一区二区在线aⅴ |