日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Btree 索引

發布時間:2024/9/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Btree 索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

索引是幫助數據庫高效獲取數據的一種數據結構,通過提取句子主干,就可以得到索引的本質。

m-way查找樹

如果想了解Btree,需要首先了解m-way數據結構。

m-way查找樹是是一種樹形的存儲結構,主要特點如下,

  • 每個節點存儲的key數量小于m個
  • 每個節點的度小于等于m
  • 節點key按順序排序
  • 子樹key值要完全小于、大于或介于父節點之間

例如,
3-way如圖,m為3,那么每個節點最多擁有為2個(m-1),

待索引元素列表為: [5, 7, 12, 6, 8, 3, 4]

Btree查找樹

Btree是一種平衡的m-way查找樹,它可以利用多個分支節點(子樹節點)來減少查詢數據時所經歷的節點數,從而達到節省存取時間的目的。

主要特點如下,

  • 每個節點的key數量小于m個(與m-way相同)
  • 除根節點和葉子節點的其他節點存儲key的個數必須大于等于m/2
  • 所有葉子節點都處于同一層,也就是說所有葉節點具有相同的深度h(樹的高度,也意味著樹是平衡的)

Btree的查找

必須從根節點開始采用二分法查找,所以時間復雜度為O(logn)。

Btree的插入

為了保證樹的平衡,如果帶插入節點的key數量小于m-1個,則直接插入(不會違反第一條特性),否則,需要將該節點分為兩部分,再執行該操作。

詳細插入操作可參考:http://www.cnblogs.com/yangecnu/p/introduce-b-tree-and-b-plus-tree.html

B+tree查找樹

B+tree是基于Btree的變體,與Btree不同之處在于,

  • 非葉子節點的key個數等于m
  • 每個節點的下級指針為n個(n為關鍵字個數,而不是n+1個)
  • 為所有葉子節點增加一個鏈指針(注意鏈上的數據是有序的)
  • 所有key都存在葉子節點中

為什么使用Btree結構

索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲的磁盤上。
索引查找過程中就要產生磁盤I/O消耗,相對于內存存取,I/O存取的消耗要高幾個數量級,所以評價一個數據結構作為索引的優劣最重要的指標就是在查找過程中磁盤I/O操作次數的漸進復雜度。(換句話說,索引的結構組織要盡量減少查找過程中磁盤I/O的存取次數。)

為了達到降低磁盤I/O的目的

  • 磁盤按需讀取,要求每次都會預讀的長度一般為頁的整數倍, 數據庫系統將一個節點的大小設為等于一個頁,這樣每個節點的元素數據只需要一次I/O就可以完全載入
  • 每次新建節點時,直接申請一個頁的空間,這樣就保證一個節點物理上也存儲在一個頁里,加之計算機存儲分配都是按頁對齊的,就實現了一個node只需一次I/O
  • 把B-tree中的m值設的非常大,就會讓樹的高度降低,有利于一次完全載入

紅黑樹

紅黑樹BST的時間復雜度是依賴于樹的高度,但是,紅黑樹的高度與Btree相比,高度更大。

來源:http://www.cnblogs.com/coder2012/p/5309197.html

總結

以上是生活随笔為你收集整理的Btree 索引的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。