mysql B+樹索引簡述

來源:互聯網
上載者:User

標籤:索引

一,查詢B+樹索引的流程

B+樹索引找到分葉節點,再找到對應的資料頁,然後將資料頁載入到記憶體中,通過二分尋找Page Directory中的槽,尋找出一個粗略的目錄,然後根據槽的指標指向鏈表中的行記錄,之後在鏈表中依次尋找。


需要注意的地方是,B+樹索引不能找到具體的一條記錄,而是只能找到對應的頁。把頁從磁碟裝入到記憶體中,再通過Page

 Directory進行二分尋找,同時此二分尋找也可能找不到具體的行記錄(有可能會找到),只是能找到一個接近的鏈表中的點,再從此點開始遍曆鏈表進行尋找。

二,聚簇索引與非聚簇索引


B+樹索引可以分為叢集索引和輔助索引,他們不同點是,叢集索引的行資料和主鍵B+樹儲存在一起,輔助索引只儲存輔助鍵和主鍵。


1.叢集索引


叢集索引是按每張表的主鍵構造的一顆B+樹,並且分葉節點中存放著整張表的行記錄資料,因此也讓叢集索引的節點成為資料頁,這個特性決定了索引組織表中資料也是索引的一部分。由於實際的資料頁只能按照一顆B+樹進行排序,所以每張表只能擁有一個叢集索引。查詢最佳化工具非常傾向於採用叢集索引,因為其直接儲存行資料,所以主鍵的排序查詢和範圍尋找速度非常快。


不是物理上的連續,而是邏輯上的,不過在剛開始時資料是順序插入的所以是物理上的連續,隨著資料增刪,物理上不再連續


2.輔助索引


輔助索引頁層級不包含行的全部資料。分葉節點除了包含索引值以外,每個分葉層級中的索引行中還包含了一個書籤,該書籤用來告訴InnoDB哪裡可以找到與索引相對應的行資料。其中存的就是叢集索引的鍵。


輔助索引的存在並不影響資料在叢集索引的結構組織。InnoDB會遍曆輔助索引並通過分葉層級的指標獲得指向主鍵索引的主鍵,然後通過主鍵索引找到一個完整的行記錄。當然如果只是需要輔助索引的值和主鍵索引的值,那麼只需要尋找輔助索引就可以查詢出索要的資料,就不用再去查主鍵索引了。


三,索引的管理


索引在建立或者刪除時,MySQL會先建立一個新的暫存資料表,然後把資料匯入暫存資料表,刪除原表,再把暫存資料表更名為原表名稱。


但是在InnoDB Plugin版本開始,支援快速建立索引。其原理是先在InnoDB上加一個s鎖,在建立過程中不需要建表,所以速度會很快。建立過程中由於加了s鎖,所以只能進行讀操作,不能寫操作。


show index form table;是查看錶中索引的資訊的。


Table:索引所在的表名


Non_unique:非唯一的索引,可以看到primary key 是0,因為必須是唯一的


Key_name:索引名稱


Seq_in_index:索引中該列的位置


Column_name:索引的列


Collation:列以什麼方式儲存在索引中。可以是A或者NULL,B+樹索引總是A,即排序的。


Cardinality:表示索引中唯一值的數目的估計值。如果非常小,那麼需要考慮是否還需要建立這個索引了。最佳化器也會根據這個值來判斷是否使用這個索引。


Sub_part:是否是列的部分被索引。100表示只索引列的前100個字元。


Packed:關鍵字如果被壓縮。


Null:是否索引的列含有NULL值。


Index_type:索引的類型。InnoDB只支援B+樹索引,所以顯示BTREE


本文出自 “餓狼的傳說” 部落格,請務必保留此出處http://9548010.blog.51cto.com/9538010/1878664

mysql B+樹索引簡述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.