久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

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

        千鋒教育

        掃一掃進入千鋒手機站

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

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

        當前位置:首頁  >  技術(shù)干貨  > mysql的Innodb引擎中,主鍵索引和普通索引的工作原理是什么?

        mysql的Innodb引擎中,主鍵索引和普通索引的工作原理是什么?

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-10-13 09:07:26 1697159246

        一、mysql的Innodb引擎中,主鍵索引和普通索引的工作原理

        在InnoDB中,表都是根據(jù)主鍵順序以索引的形式存放的,這種存儲方式的表稱為索引組織表。InnoDB使用了B+樹索引模型,所以數(shù)據(jù)都是存儲在B+樹中的。

        每一個索引在InnoDB里面對應(yīng)一棵B+樹。

        假設(shè),我們有一個主鍵列為ID的表,表中有字段k,并且在k上有索引。

        這個表的建表語句是:

        mysql> create table T(

        id int primary key,

        k int not null,

        name varchar(16),

        index (k))engine=InnoDB;

        主鍵索引的葉子節(jié)點存的是整行數(shù)據(jù)。在InnoDB里,主鍵索引也被稱為聚簇索引(clustered index)。

        非主鍵索引的葉子節(jié)點內(nèi)容是主鍵的值。在InnoDB里,非主鍵索引也被稱為二級索引(secondary index)或普通索引。

        根據(jù)上面的索引結(jié)構(gòu)說明,我們來討論一個問題:基于主鍵索引和普通索引的查詢有什么區(qū)別?

        如果語句是select * from T where ID=500,即主鍵查詢方式,則只需要搜索ID這棵B+樹;如果語句是select * from T where k=5,即普通索引查詢方式,則需要先搜索k索引樹,得到ID的值為500,再到ID索引樹搜索一次。這個過程稱為回表。 也就是說,基于非主鍵索引的查詢需要多掃描一棵索引樹。這也是為什么說我們要盡量使用主鍵查詢了。

        延伸閱讀:

        二、索引維護

        B+樹為了維護索引有序性,在插入新值的時候需要做必要的維護。以上面這個圖為例,如果插入新的行ID值為700,則只需要在R5的記錄后面插入一個新記錄。如果新插入的ID值為400,就相對麻煩了,需要邏輯上挪動后面的數(shù)據(jù),空出位置。

        而更糟的情況是,如果R5所在的數(shù)據(jù)頁已經(jīng)滿了,根據(jù)B+樹的算法,這時候需要申請一個新的數(shù)據(jù)頁,然后挪動部分數(shù)據(jù)過去。這個過程稱為頁分裂。在這種情況下,性能自然會受影響。

        除了性能外,頁分裂操作還影響數(shù)據(jù)頁的利用率。原本放在一個頁的數(shù)據(jù),現(xiàn)在分到兩個頁中,整體空間利用率降低大約50%。

        當然有分裂就有合并。當相鄰兩個頁由于刪除了數(shù)據(jù),利用率很低之后,會將數(shù)據(jù)頁做合并。合并的過程,可以認為是分裂過程的逆過程。

        聲明:本站稿件版權(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
        為什么二級封鎖協(xié)議不能保證可重復(fù)讀,一級封鎖協(xié)議不能保證可重復(fù)讀和讀臟數(shù)據(jù)?

        一、為什么二級封鎖協(xié)議不能保證可重復(fù)讀排它鎖又叫寫鎖,事務(wù)A對數(shù)據(jù)D加了排它鎖,其它任何事務(wù)都不能再對數(shù)據(jù)D加共享鎖或者排它鎖。也就是說A...詳情>>

        2023-10-13 11:01:05
        用access做一個數(shù)據(jù)庫,用戶登錄界面,不同用戶權(quán)限不同,應(yīng)該怎么設(shè)置?

        一、用access做一個數(shù)據(jù)庫,用戶登錄界面,不同用戶權(quán)限不同用access做一個數(shù)據(jù)庫,用戶登錄界面,不同用戶權(quán)限不同,應(yīng)該設(shè)置三張表:用戶表,...詳情>>

        2023-10-13 10:57:31
        MySQL InnoDB聚簇索引B+樹的階(m)是怎樣決定的?

        一、MySQL InnoDB聚簇索引B+樹的階(m)是怎樣決定的1、頁的大?。≒age Size)B+樹是以固定大小的頁(Page)為單位進行存儲和操作的,頁是數(shù)據(jù)庫...詳情>>

        2023-10-13 10:26:26
        在 iPad 上運行 Windows 是什么體驗?

        一、在 iPad 上運行 Windows 是什么體驗?zāi)壳笆忻嫔嫌幸恍┠軌蛟?iPad 上運行 Windows 的應(yīng)用程序,例如 Parallels Access、Splash較好、VMware ...詳情>>

        2023-10-13 10:18:47
        app的啟動流程都包括哪些步驟?

        一、app的啟動流程包括的步驟1、創(chuàng)建進程App發(fā)起進程:當從桌面啟動應(yīng)用,則發(fā)起進程便是Launcher所在進程;當從某App內(nèi)啟動遠程進程,則發(fā)送進...詳情>>

        2023-10-13 10:03:27
        快速通道
        龙南县| 平凉市| 江口县| 海伦市| 达孜县| 雅江县| 鄄城县| 安康市| 莫力| 思茅市| 缙云县| 礼泉县| 阜新市| 茶陵县| 拜城县| 台中县| 沽源县| 无为县| 偏关县| 藁城市| 山西省| 尼木县| 潜江市| 崇阳县| 大理市| 阿坝| 潜山县| 阜阳市| 甘谷县| 石台县| 中江县| 楚雄市| 石家庄市| 溧阳市| 老河口市| 乌鲁木齐市| 宜都市| 松桃| 邢台市| 福州市| 固阳县|