mysql性能优化

42 阅读1分钟

1.红黑树

二叉平衡树,高度太高IO次数太多性能下降

2.B+树

  1. 非叶子节点不存储data,只存储索引(冗余),可以降低高度
  2. 叶子节点包含所有索引字段和data,
  3. 叶子节点用指针连接,提高区间访问性能 一个大节点在内存中的折半查找的性能很高,远远大于io查找 节点之间的双向指针方便范围查找

3.MyISAM存储引擎

  1. 表结构,索引文件和数据文件是分离(非聚集)
  2. 非聚集索引:叶节点包不含了完整的数据记录,只包含数据地址,查找数据需要回表,经历2次IO

4.InnoDB存储引擎

  1. 表结构,索引数据文件
  2. 聚集索引:叶节点包含了完整的数据记录
  3. 普通索引:叶节点只存储主键索引
  4. hash索引:数组+链表,hash冲突小的时候,性能比b+树高,主要是他不支持范围查找

5.联合索引

  1. 减少索引太多占用存储空间
  2. 多个索引字段要匹配最左匹配原则才会走索引,跳着查找不会走索引,是因为中间的单个索引查找是无序,要查找全表只有定位前面的索引,再查找该索引才会有序