B+Tree和B-Tree的區別?
- B+樹幾點關鍵字搜索採用閉合區間
- B+樹非葉節點不保存數據相關信息,只保存關鍵字和子節點的引用
- B+樹關鍵字對應數據保存在葉子節點中
- B+樹節點是順序排列並且相鄰節點具有順序引用的關係
爲什麼mysql不使用平衡二叉樹?
數據處的深度決定着他的IO操作次數,IO操作耗時大
每一個磁盤塊保存的數據量太小
B+Tree和B-Tree的區別?
B+樹幾點關鍵字搜索採用閉合區間
B+樹非葉節點不保存數據相關信息,只保存關鍵字和子節點的引用
B+樹關鍵字對應數據保存在葉子節點中
B+樹節點是順序排列並且相鄰節點具有順序引用的關係
B+樹是B-樹的變種,他擁有B-樹的優勢
B+樹掃庫掃表能力強,磁盤讀寫能力更強
排序能力更強,查詢效率更加穩定
爲什麼選用B+Tree?
穩定(B-Tree尋子不穩定,可能1次1層,也可能2次100層才能檢索到,效率是不穩定)
B+Tree 每次都查到最後一層,所以每次查的效率是穩定的)
爲什麼不用紅黑樹呢?
要求是從根節點到葉子節點的最長路徑不大於最短路徑的2倍
這個要求遠遠不夠,IO次數還是太多了,所以不適用與數據庫的索引
B+Tree三層,三次IO就能達到2千多萬條數據