對於現在網際網路對資料庫的操作,都是查詢的使用比較多,雖說是使用了各種快取技術來儲存從資料看讀取的資料,但是資料在不停地更新,還是要不停地查詢資料庫,但是在查詢資料庫的時候對於io消耗特別大,所以能把查詢的io的操作次數降低,那對於資料庫的效能提公升是很明顯的,因此b+ tree就出現了
對於b+ tree資料結構是由乙個個磁碟組成,每個磁碟由資料和指標組成
以磁碟塊1為例,指標 p1 表示小於17的磁碟塊,p2 表示在 17~35 之間的磁碟塊,p3 則表示大於35的磁碟塊。
比如要查詢資料項99,首先將磁碟塊1 load 到記憶體中,發生 1 次 io。接著通過二分查詢發現 99 大於 35,所以找到了 p3 指標。通過p3 指標發生第二次 io 將磁碟塊4載入到記憶體。再通過二分查詢發現大於87,通過 p3 指標發生了第三次 io 將磁碟塊11 載入到記憶體。最後再通過一次二分查詢找到了資料項99。
由此可見,如果乙個幾百萬的資料查詢只需要進行三次 io 即可找到資料,那麼整個效率將是非常高的。
觀察樹的結構,發現查詢需要經歷幾次 io 是由樹的高度來決定的,而樹的高度又由磁碟塊,資料項的大小決定的。
磁碟塊越大,資料項越小那麼樹的高度就越低。這也就是為什麼索引欄位要盡可能小的原因。
MySQL索引原理之索引原理
索引定義 是儲存引擎用於快速查詢記錄的一種資料結構。需要額外開闢空間和資料維護工作。索引是物理資料頁儲存,在資料檔案中 innodb,ibd檔案 利用資料頁 page 儲存。索引可以加快檢索速度,但是同時也會降低增刪改操作速度,索引維護需要代價。索引涉及的理論知識 二分查詢法 hash和b tree...
mysql索引 mysql索引實現原理
什麼是索引 索引是一種高效獲取資料的儲存結構,例 hash 二叉 紅黑。mysql為什麼不用上面三種資料結構而採用b tree 若僅僅是 select from table where id 45 上面三種演算法可以輕易實現,但若是select from table where id 6 就不好使了...
mysql 索引原理
b樹 b樹高度 資料庫為什麼使用這種結構?一般來說,索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存的磁碟上。這樣的話,索引查詢過程中就要產生磁碟i o消耗,相對於記憶體訪問,i o訪問的消耗要高幾個數量級,所以評價乙個資料結構作為索引的優劣最重要的指標就是在查詢過程中磁碟...