主要观点:B 树在许多软件包括数据库管理系统中起基础作用,MySQL 等依赖 B 树进行高效数据查找。B 树以树状结构存储键值对,各节点有特定规则,其适合存储大量持久数据。B+树是数据库索引常用的变体,与 B 树规则有不同,更适合数据库,内节点不存值可容纳更多键,所有值可在同一层通过链表遍历。MySQL 的 InnoDB 引擎大量使用 B+树,创建表时需指定主键,默认节点大小为 16k,还有二级索引等。主键选择影响数据在磁盘上的布局和性能,如整数序列和 UUID 作为主键各有优劣,整数序列更利于插入和查询,UUID 则随机。同时要考虑主键大小,BIGINT 比 UUID 更适合 B+树,能使树更浅查询更快。InnoDB 的缓冲池可提升查询性能,减少磁盘 I/O 操作。
关键信息:
- B 树:以树状结构存储键值对,各节点有数量等规则,适合大量持久数据存储。
- B+树:内节点只存键和子指针,值存于叶节点,更适合数据库,可容纳更多键使树更浅。
- MySQL InnoDB:依赖 B+树,创建表需指定主键,默认节点大小 16k,有二级索引,缓冲池提升性能。
- 主键选择:整数序列利于插入和查询,UUID 随机,主键大小影响 B+树性能。
重要细节:
- B 树搜索方式:从根节点开始,检查节点是否含目标键,不在则找到插入位置的子指针,重复直到找到或到达叶节点。
- B+树调整规则:内节点只存键和子指针,非叶节点存 N 个孩子指针,各节点含“前后”指针可作双向链表。
- MySQL 中主键和索引:创建表时指定主键,InnoDB 为每张表创建 B+树索引,主键用于索引键,其他列值存于叶节点,二级索引结构类似。
- 插入对比:UUID 主键插入时节点不可预测,值无序;整数序列主键插入路径可预测,叶节点值有序。
- 数据顺序:UUID 主键查询时值序列分散,顺序插入时结果页相邻;顺序主键利于按时间顺序查询。
- 页面和 InnoDB:B+树节点大小可设为 16k(InnoDB 页大小),InnoDB 通过缓冲池减少磁盘 I/O 操作。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。