索引是高效、排序好的資料結構。
為什麼不用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...