重点内容:
1. Mysql架构:客户端+ Server层 + 存储引擎
2. 索引数据结构:B+树
4. 索引优化:覆盖索引、排序、JOIN、分页; COUNT; 索引下推;单/双路排序
5. 数据库事务; 锁;隔离级别; MVCC(undo日志版本链+read view视图)
6. InnoDB底层原理:undo日志、redo log buffer、redo log、binlog、Buffer pool、数据磁盘文件(.idb)
7. msyql8 新特性:降序索引、group by不排序、函数式索引、隐藏索引、索引跳跃扫描等等
问题:
1. 数据库隔离级别实现方式, 锁、隔离级别、MVCC, 之间的关系, 还是没有理清楚
2. update操作,更新条件是非索引字段,行锁可能会变表锁。但是并不是直接将整张表加上表锁,因为有的记录可能被其他事务锁住。那么, 这种情况怎么加锁?
3. RR级别会升级为表锁,RC级别不会升级为表锁。为什么?
4. InnoDB支持行级锁, MyISAM不支持行锁。 为啥MyISAM不支持行锁? InnoDB的行锁是怎么实现的?
5. 简单的select操作加共享锁吗?select * from T where id = 1