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申请的页都是以磁盘磁道单元为基础的,每一行最少的寻轨迹,主键索引相邻的行存储在一页