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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

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

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

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

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

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

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

每一個索引在InnoDB里面對應一棵B+樹。

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

這個表的建表語句是:

mysql> create table T(

id int primary key,

k int not null,

name varchar(16),

index (k))engine=InnoDB;

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

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

根據上面的索引結構說明,我們來討論一個問題:基于主鍵索引和普通索引的查詢有什么區別?

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

延伸閱讀:

二、索引維護

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

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

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

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

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
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
為什么二級封鎖協議不能保證可重復讀,一級封鎖協議不能保證可重復讀和讀臟數據?

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

2023-10-13 11:01:05
用access做一個數據庫,用戶登錄界面,不同用戶權限不同,應該怎么設置?

一、用access做一個數據庫,用戶登錄界面,不同用戶權限不同用access做一個數據庫,用戶登錄界面,不同用戶權限不同,應該設置三張表:用戶表,...詳情>>

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

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

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

一、在 iPad 上運行 Windows 是什么體驗目前市面上有一些能夠在 iPad 上運行 Windows 的應用程序,例如 Parallels Access、Splash較好、VMware ...詳情>>

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

一、app的啟動流程包括的步驟1、創建進程App發起進程:當從桌面啟動應用,則發起進程便是Launcher所在進程;當從某App內啟動遠程進程,則發送進...詳情>>

2023-10-13 10:03:27
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲专区日韩专区欧美专区 | 一本在线高清不卡dvd | 亚洲欧美精品一区 | 亚洲码一区二区三区在线看 | 亚洲国产午夜福利在线视频 | 我要色综合色鬼久久 |