[问题] 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