Mysql基础知识学习

Innodb 索引结构

B+tree 相比红黑树可以用更少的磁盘 IO B+tree 相比 Hash 结构和 B-tree,支持范围查询

索引分为聚簇索引和二级索引。 聚簇索引就是包含所有的内容,表数据存于叶子节点上。

通过二级索引一般需要回表查询,但是如果是二级索引是覆盖索引,也就是包含了所有需要的字段,那么就可以不回表了。

联合索引并不是多个索引,而是一个索引结构,按书写顺序来的。

MVCC 原理

MVCC 依赖 undolog + readView + 数据库隐藏字段

readView 是开始读时候的快照,维护了开始时刻活跃事务 id

可见性就是依赖这个活跃事务 idList,如果当前事务(readView 中的相关事务 id) id 比最小的还小,那么可见,比最大的还大,那么不可见,如果在之间,那么就看在不在列表里,如果在,那么就不可见,不在就可见。

如果不可见,那么就会去找 undolog 中的版本链,找到合适的事务 id。比较方法应该还是如上所述。

Explain/ DESC 优化查询

extra 中 filesort 并不是文件排序,加了 order by 之后一般都有。

行锁和表锁

行锁 -》 锁种类:排他锁 (X 锁),共享锁(S 锁)

排他锁中又有:Gap 锁,Record lock, next-key lock(就是 record lock 和 gap lock 的组合)

表锁 -》 意向锁

updatedupdated2024-05-132024-05-13