MySQL索引底层数据结构算法、优化以及锁与事务整理

目录

一、索引数据结构实现:

1.1、二叉树

1.2、红黑树

1.3、Hash表

1.4、B-Tree结构(BTree)

1.5、B+Tree结构(B-Tree变种:BPlusTree)

二、MyISAM和InnoDb存储引擎索引实现

2.1、MyISAM存储引擎索引实现

2.2、InnoDb存储引擎索引实现

2.3、联合索引——索引最左前缀原理

2.4、MyISAM和InnoDB的应用场景

三、Explain工具分析SQL

3.1、explain 两个变种

3.2、优化原则:

3.2.1、全值匹配

3.2.2、最左前缀法则

3.2.3、不在索引列上做任何操作

3.2.4、存储引擎不能使用索引中范围条件右边的列

3.2.5、尽量使用覆盖索引

3.2.6、不等于查询

3.2.7、is null,is not null 也无法使用索引

3.2.8、like通配符

3.2.9、字符串不加单引号索引失效

3.2.10、少用or或in,

3.2.11、范围查询优化

3.3、Order by与Group by优化总结

3.4、Using filesort文件排序原理详解

3.4.1、单路排序:

3.4.2、双路排序(又叫回表排序模式):

3.4.3、单路排序的详细过程:

3.4.4、双路排序的详细过程:

3.5、分页查询优化

3.5.1、根据自增且连续的主键排序的分页查询

3.5.2、根据非主键字段排序的分页查询

3.6、Join关联查询优化

3.6.1、关联sql的优化:

3.7、in和exsits优化

3.8、count(*)查询优化

四、锁

4.1、锁分类

4.1.1、从性能上分:乐观锁和悲观锁。

4.1.2、从对数据库操作的类型分:读锁和写锁(都是悲观锁)

4.1.3、从对数据操作的粒度分:表锁和行锁,还有页锁。

4.1.4、行锁:记录锁、间隙锁、临键锁

4.2、行锁支持事务

4.2.1、事务(Transaction)及其ACID属性

4.2.2、并发 事务处理带来的问题:

4.2.3、解决不可重复读

4.2.4、解决幻读

4.3、事务隔离级别

4.4、MVCC多版本并发控制

4.5、针对行锁特性的优化建议:


索引的本质:索引是帮助MySQL高效获取数据的排好序数据结构
MySQL索引底层数据结构算法、优化以及锁与事务整理_第1张图片

你可能感兴趣的:(个人笔记,mysql,数据结构)