索引

让mysql高效读取数据一种排好序的数据结构

数据结构分类

  1. 二叉树 , 树高度太高 io 效率低
  2. 红黑树 , 树高度太高 io 效率低
  3. hash表 , 无法范围查询,hash冲突问题
  4. b-tree ,多叉平衡树,排好序的,所有节点都存数据
  5. b+tree mysql 实际用的数据结构 ,b tree变种
    1. 叶子节点存数据,其它节点不存,同样数据,索引高度更低
    2. 叶子节点前后索引 方便范围查询

b树

image.png

b+树

image.png

mysql 查询优化核心问题

对每层数据加载一次的i/o 时间远大于数据处理时间,想要查询到某个数据,必须从树的最高层开始 ,一层一层加载,这也是为啥必须要把树的高度控制在3-4层内原因。

一些数据量概念问题

  1. 一次加载页的大小 默认是 16kB,