索引底層資料結構和演算法

2021-09-01 08:19:26 字數 701 閱讀 4665

索引是高效、排序好的資料結構。

為什麼不用hash結構,hash雖然單個快,但是範圍慢;

陣列結構的,查詢慢,需要遍歷。

二叉樹結構的,如果資料是從小到大的插入就會屬於單邊資料,一樣速度慢。

紅黑樹結構,雖然能夠實現自動的平衡樹,但是如果資料量非常大的時候,還是會出現層次特別高。

btree結構,是提高乙個節點的儲存量。可以減少樹的高度,提高查詢速度。 

而mysql採用的是b+tree結構,是btree的變異,葉子節點稱之為度,而度的大小一般為磁碟一次能讀取的資料的大小。

(而磁碟的 尋道時間慢,磁碟旋轉速度快,一般磁碟i/o次數評價索引結構的優劣)

(預讀:磁碟一般會順序向後讀取一定長度的資料【頁的整數倍】放入記憶體,計算機一般頁的大小為4k)

(b+tree節點的大小設為乙個頁的大小,就可以一次讀取乙個頁是一次i/o)

mysql的引擎是屬於表結構的。而資料庫鎖一般為表級別的鎖,頁級別的鎖,行級別的鎖(innodb)

mysql分為myisam 引擎(非聚集)

主鍵索引和普通索引,他的索引btree葉子節點上儲存的是資料的指標(資料的存值位址)。

每個索引都是乙個btree結構。

innodb引擎(主鍵索引是(聚集索引))

索引底層使用資料結構:b+tree

主鍵索引的葉子節點儲存的是 索引值和行資料。

普通索引儲存的主鍵索引。

Mysql索引底層資料結構

想要了解索引,首先要知道索引到底是什麼呢 索引是幫助mysql高效獲取資料的排好序的資料結構 通俗來講就好比喻一本書,那這本書的目錄就好比做索引 索引儲存在檔案裡 儲存引擎是myisam的索引檔案儲存在 myi檔案中,儲存引擎是innodb的索引檔案儲存在 idb檔案中 通常資料庫中的資料就是存在硬...

索引的底層資料結構

索引的底層資料結構有 1 樹tree,準確的說是b 樹 2 hash 時間複雜度對比 hash的時間o 1 tree的o logn 為什麼索引採用b 樹,而不採用hash這種結構?hash這種結構對與獲取單條記錄時的查詢效率是要比b 樹效率要高的,但是對與資料的範圍查詢效率就很低,特別是對於資料量大...

MySql索引底層資料結構與演算法

一 索引資料結構 索引是幫助mysql高效獲取資料的排好序的資料結構 二叉樹 特點 左子樹小於右子樹 缺點 如果儲存自增資料,二叉樹會退化成煉表,查詢效率低 紅黑樹 特點 自平衡二叉樹,樹高相對平衡,不會出現極端情況 性質1.節點是紅色或黑色。性質2.根節點是黑色。性質3.所有葉子都是黑色。葉子是n...