[問題] hw6

作者: peteranny (阿Tin)   2012-12-17 16:01:34
請問助教
B+ tree裡每個node都有定義M個element的容量
想問一下,在minibase裡,每個node其實就是一個page的話
那一個page裡能寫多少element,這個M的數量是定義在哪裡呢?
而且還要考慮到,一個page的free space萬一不夠寫M個element,那要怎麼辦?
作者: nick0702 (言)   2012-12-18 11:52:00
直接看page內剩的空間夠不夠放sorted_page.h有定義free_space()int free_space() { return available_space();}至於個數 使用在sorted_page.h numberOfRecordsint SortedPage::numberOfRecords() {return slotCnt;}page空間放不下了 就把其中一半的搬到新的去所以他的M是依據page空間而定,free_space不夠就到上限了
作者: coconutman (被椰子砸到)   2012-12-18 15:12:00
M不是定義在headerNode裡面嗎@@?
作者: nick0702 (言)   2012-12-18 15:43:00
headerNode 是 BTreeHeaderPage? M取決於 page size
作者: coconutman (被椰子砸到)   2012-12-18 16:20:00
噢對,我是指BTreeHeaderPage,它裡面有個keysize。定義在那邊感覺比較合理,不然page能存的record應該太多。@@?噢,我大概懂了[email protected]@"
作者: nick0702 (言)   2012-12-18 16:38:00
keysize 是KEY的長度 不是 element數量page可以存很多的record 不然要一直pin,unping會很多餘
作者: peteranny (阿Tin)   2012-12-18 20:53:00
那"其中一半"是指數量上,還是指空間上?如果是數量上的話,就不一定符合每個node空間在M/2~M了
作者: nick0702 (言)   2012-12-18 20:56:00
其實意思差不多 不過用數量判斷比較好若page空間和element size都一樣 node size就一樣了其實我也不是很肯定M 的值 因為要看page 和element大小不過我認為page空間和element size 都是固定的我想他基本上會符合M/2~M. M是最大放置在page的element數只是程式寫的時候用free_space判斷是不是到最大值然後用 numberOfRecords知道現在的elements數再把其中一半的element搬到新的page去

Links booklink

Contact Us: admin [ a t ] ucptt.com