InnoDB 存储引擎认识

  1. B+树存储,叶子节点双向链表;
  2. 索引(聚集索引/辅助聚集索引)
    1. 聚集:叶子节点逻辑顺序存放整张表的行记录数据(对主键的排序查找/范围查找非常快);
    2. 非聚集:叶子节点除包含键值外还包含一个书签(bookmark),告诉InnoDB存储引擎哪里可以找到与索引对应的行数据,因此辅助索引的书签就是相应行数据的聚集索引键;
  3. 索引的使用
    1. 字段高选择性,选择表中少行的原则(大概20%以下),否则扫描全表;可解释为什么符合索引(a,b,c)a=1&b>2&c=4的中断问题
    2. 提高读性能,引入了预读取(随机预读取/顺序预读取),一次IO读取多页数据到缓冲区
    3. 因为辅助索引不包含整行数据,一页存取量更多,所以总是先从辅助索引的叶子结点判断是否能得到所需数据。
    4. 复合索引每列数据都是有序的
    5. 查询某列,该列即建立了主键索引,又是复合索引的首部,只用到主键索引,(叶子节点存储更多,且不会通过辅助聚集索引再查聚集索引)where a=1 order by b 会走复合索引依据复合索引的列都是有序的,不会通过主键a的索引查出后再对b进行排序

猜你喜欢

转载自www.cnblogs.com/gaoqing502/p/12926848.html