存储和索引

1、inner DB

  • B+树 vs B树

    • B+树只在叶子节点存储数据,B树的所有节点都存储数据;因此B+树在索引阶段只需要IO索引段即可;
    • B+树和B树都是平衡树,平衡树的左右结点的高度差不大于1
    • B+树的叶子结点之间以双向链表链接和顺序存储的,方便磁盘的顺序读取和查找
  • innerDB vs myasim

  • 索引段和数据段

    • innerDB的索引和数据是分开的,索引过程不读取数据,索引的终点是数据页,数据页内再通过二叉树查找行;
  • 聚集索引和辅助索引

    • 聚集索引即主键索引,其他索引都是辅助索引,其他索引的终点是聚集索引,聚集索引的终点是数据页;如果使用聚集索引的行锁,锁的是目标行,如果走辅助索引还是需要通过聚集索引锁行
    • 有时候辅助索引的查询结果再聚集索引上比较分散导致随机读,此时有可能不走辅助索引,退步的聚集索引;


      来自搜索
  • 自适应Hash优化:innerDB会对热点读的数据行按照固定的where条件模式,自动创建hash索引,一次IO定位。

  • 全文索引:倒排索引

  • 数据的冷热

    • 查询多+热点明显,效率最高,最理想
    • 查询多+冷热均匀,在内存允许的情况下,进行查询预热可以抗量;
    • 修改多+热点明显,tps会受影响,尽可能锁定聚集索引
    • 修改多+热点不明显,tps不受影响
  • 其他优化

    • mysql申请的页都是以磁盘磁道单元为基础的,每一行最少的寻轨迹,主键索引相邻的行存储在一页

你可能感兴趣的:(存储和索引)