Hasty Briefsbeta

双语

B-trees and database indexes (2024)

3 days ago
  • #b-tree
  • #database-indexes
  • #mysql-performance
  • B 树是 MySQL 和 MongoDB 等数据库管理系统中的基础数据结构,通过索引实现高效的数据查找。
  • B 树将有序的键/值对存储在节点中,每个节点的大小与磁盘块相匹配,以优化持久化存储。
  • B+ 树是 MySQL 中使用的一种变体,仅在叶节点存储值,通过链表支持顺序遍历,并在内部节点容纳更多键。
  • MySQL 的 InnoDB 引擎将表数据存储在 B+ 树中,以主键作为树键;二级索引使用额外的 B+ 树。
  • 选择顺序主键(如自增整数)而非随机键(如 UUID),可以减少 I/O 并提升插入和查询性能。
  • 主键大小很重要:较小的键(如 BIGINT 与 UUID 对比)使每个节点能容纳更多键,从而形成更浅的树,实现更快的查找。
  • InnoDB 使用缓冲池将页缓存在内存中,以减少磁盘 I/O,但最小化页面访问对于性能仍然至关重要。