日韩欧乱色一区二区三区在线_久久―日本道色综合久久_欧美日本一区二区_网曝91综合精品门事件在线

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > mysql 非少數索引的等值查詢為什么要加gap鎖?

mysql 非少數索引的等值查詢為什么要加gap鎖?

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

一、mysql 非少數索引的等值查詢為什么要加gap鎖

mysql 中非少數索引使用的也是 B+ 樹來組織數據結構。

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

現在假設有另外一個事務,它執行

insert into table? values(2);

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

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

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

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 的主鍵索引。

第六個是間隙鎖,鎖住(2,4)區間。

延伸閱讀:

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

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

特點:

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

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

常見字符集:

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

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

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

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

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 石门县| 观塘区| 浦东新区| 曲阜市| 安新县| 安岳县| 双城市| 镇安县| 安乡县| 太仓市| 长垣县| 柳林县| 綦江县| 高碑店市| 友谊县| 东兴市| 平阳县| 玉龙| 增城市| 商洛市| 庄浪县| 乡城县| 曲麻莱县| 海丰县| 色达县| 鄄城县| 五河县| 雷州市| 文登市| 酉阳| 万全县| 五家渠市| 沾益县| 沂水县| 宝清县| 巫溪县| 竹溪县| 延庆县| 桃源县| 衡水市| 浏阳市|