对于 m 阶 B 树,除根外的每个节点都必须包含 m-1 到 2m-1 个元素,其中每个元素至少是一个键,也可能是一些附加数据(例如,一个值)。然而,每个节点必须选择一些恒定的总大小才能在底层块设备上提供良好的性能。那么如果你的元素是可变大小的会发生什么呢?
SQLite3 似乎有一个将额外的块大小的片段附加到它的节点上的方案,并且 MySQL 允许您声明记录的大小(例如,您可以键入的字段不仅是字符串,还可以是某种大小的字符串)。还有哪些其他解决方案?人们在选择一个而不是另一个时会怎么想?
编辑:上一句,我的意思是,数据库开发人员在决定以一种方式而不是另一种方式实现他们的 B 树时会考虑什么?
(我现在正在上数据库课程,所以我对理论和设计角度更感兴趣,而不是特定系统的细节。)