目前为止,作为绝大多数的数据库选择的主流——Mysql的使用愈发广泛,这篇文章我们就简单小计一下Mysql5.7版本之后,默认引擎Innodb使用B+树的基本分页机制。
B+树的优势在于使用明显较小的层数来完成数据库数据的查询,而Innodb的默认分页大小为16kb,那么这个16kb所影响的方面在什么地方呢?
首先我们要理解在整个数据底层中,在非叶子节点的情况下,每一页的内容:
- file Header、Page Header等 102字节
- Infimum+Supermum 13字节
- 记录头 5字节
- 索引类型(例:int为 4字节,longint为 8字节)
- 页目录偏移量 4字节
非叶子节点可以存储的记录数量
=(页大小-file Header - Page Header-...)/(记录头 +主键+页偏移量)
=(16kb-128b)/(5b+4b(int