1. 程式人生 > >索引底層資料結構和演算法

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

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

 

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

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

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

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

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

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

 

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

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

 (B+Tree節點的大小設為一個頁的大小,就可以一次讀取一個頁是一次I/O)

 

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

 

mysql分為MyISAM 引擎(非聚集)

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

每個索引都是一個BTree結構。

 

 

 

 

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

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

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

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

視訊資源:

連結:https://pan.baidu.com/s/19OnjT4uAWZ_FfjRjLVORnw 
提取碼:r3gy