二叉樹(shù)->b-樹(shù),解決的是讀索引的IO次數(shù)問(wèn)題
在真實(shí)的數(shù)據(jù)庫(kù)中往往索引本身的數(shù)據(jù)量也是非常龐大的
樹(shù)的查找,其實(shí)是每一層需要做一次判斷因?yàn)樗饕艽螅荒艽嬖谖募铮荒芤淮渭虞d,所以沒(méi)判斷一層,都需要有一次磁盤(pán)IO,所以查找IO次數(shù)最壞的情況
就是樹(shù)的高度-1,加入你要的節(jié)點(diǎn)在最后一層的話
二叉樹(shù),是只有兩個(gè)子節(jié)點(diǎn)的一單數(shù)據(jù)量一大的話
樹(shù)高會(huì)很恐怖B-Tree,的度是沒(méi)有限制的
可以打打減少這個(gè)數(shù)的高度,從而減少磁盤(pán)讀的次數(shù)b-tree -> b+tree :這個(gè)是針對(duì)IO的再次優(yōu)化
b+tree,的父節(jié)點(diǎn)是不存數(shù)據(jù)的
數(shù)據(jù)庫(kù)索引,其實(shí)一個(gè)節(jié)點(diǎn)剛好占的是硬盤(pán)的一頁(yè)空間
由于索引節(jié)點(diǎn)不存數(shù)據(jù)
一個(gè)硬盤(pán)頁(yè),也就是一個(gè)節(jié)點(diǎn)的度就可以更大
可以最大程度減少樹(shù)的高度
之所以一個(gè)節(jié)點(diǎn)剛好占一頁(yè),也是IO的問(wèn)題,一次硬盤(pán)IO只能讀一頁(yè)
這是結(jié)構(gòu)上的改進(jìn)
效果就是一個(gè)節(jié)點(diǎn)一次IO的度更大了
他這個(gè)意思就是說(shuō),如果有索引,一次索引查找,基本不會(huì)超過(guò)2次硬盤(pán)IO
這還只是b-tree
b-tree這玩意兒就讀B樹(shù)
很多人讀B減數(shù)是誤讀