MySQL 相关八股
1.InnoDB 和 MyISAM 的区别
对于事务 InnoDB 提供支持 MyISAM 不支持事务,InnoDB 支持外键,MyISAM 不支持外键,InnoDB 支持行级锁,MyISAM 只支持表级锁,InnoDB 支持事务的四个特性 MyISAM 不支持 acid 特性,InnoDB 使用聚簇索引,MyISAM 使用非聚簇索引,索引和数据分离。
2.使用 b+树而非红黑树或者 b 树的原因是什么
b+树是多路平衡,而红黑树是二路平衡的,路更少的话树的高度就会更高,需要的磁盘 IO 也会更多,除此之外 b+树支持顺序查找,叶子节点之间按照有序的 key 排列并且叶子节点间用双向指针链接起来,红黑树对于范围查找没有这种支持机制。
3.aid 特性分别怎么实现
原子性通过 undolog 实现,通过记录旧值或者反向操作事务失败回滚,隔离性通过 MVCC 实现,每个记录保存多个版本的数据,持久性通过 Redolog 实现,可以和 binlog 结合起来两阶段写,掉电可以通过 Redolog 恢复。
4.索引失效的五个场景
使用函数、发生隐式类型转换、对索引列计算、like 通配符开头%以及联合索引不符合最左匹配原则
红黑树这个之前只记了为什么不是 b 和为什么不是哈希,这个比较少见。