MySQL核心深入剖析
2021-03-30 18:58:34 26 举报
AI智能生成
登录查看完整内容
MySQL核心剖析
作者其他创作
大纲/内容
MySQL核心深入剖析
并发和事务
事务基础
事务的定义
事务的特点
事务的基本操作
设置手动提交事务
并发事务问题
脏读
不可重复读
幻读
事务隔离级别
查看事务隔离级别
读未提交
读已提交
可重复读
串行化
MySQL的锁机制
表级锁
读锁(read lock)
写锁(write lock)
加锁和释放锁
查看表锁使用情况
元数据锁
查询语句的时候会自动添加元数据读锁
行级锁
共享锁(S)
排它锁(X)
行锁的算法
临键锁
对于在执行过程中扫描到的记录都会加锁
间隙锁
记录锁
意向锁
MVCC并发原理剖析
隐藏字段
Undo Log
一致性视图(Read View)
案例分析
InnoDB存储架构
Buffer Pool
磁盘预读
局部性原理
数据淘汰算法
Change Buffer
Log Buffer
课程说明
课程目标
掌握MySQL常见的存储引擎
掌握MySQL的数据存储结构B+树
掌握MySQL的索引优化
掌握MySQL的事务和锁
掌握MVCC原理和实现
掌握InnoDB内存架构
课程定位
有MySQL的基本使用经验
参考资料
官方文档
丁奇-MySQL实战45讲
MySQL技术内幕(InnoDB存储引擎)第2版
公众号架构师之路
MySQL数据库架构
MySQL的基本认识
常见的存储引擎
InnoDB
MyISAM
MEMORY
Archive
NDB
常见命令
查看默认的存储引擎
查看存储引擎
指定存储引擎
查看文件存储路径
区别
索引
索引基础
什么是索引
为什么需要使用索引
设置初始数据
测试查询性能
索引分类
主键索引
唯一索引
普通索引
查看所有信息
基本操作
创建索引
添加索引
删除索引
复合索引
索引结构
Hash
Hash结构模拟
Hash算法基本流程
Hash算法的优缺点
单值查询非常快
hash索引范围查询比较麻烦
B-Tree
常见的B树
3阶B树
4阶B树
5阶B树
5阶B树特点
整个树是处于 又胖又矮 的一个状态
B树索引结构图
B+Tree
常见的B+树
3阶B+树
4阶B+树
5阶B+树
特点
在叶子节点存储了所有的节点数据
叶子节点直接通过链表的方式连接
B+树索引结构图
索引架构
辅助索引
聚镞索引
索引的选择
好处
提高表数据的检索效率
如果排序的列是索引列,大大降低排序成本
在分组操作中如果分组条件是索引列,也会提高效率
不足
如何选取索引
较频繁的作为查询条件的字段应该创建索引
更新非常频繁的字段不适合创建索引
不会出现在WHERE 子句中的字段不该创建索引
索引分析工具
Explain
基本使用
核心字段
id
select_type
union
table
type
possible_keys
key
key_len
ref
rows
Extra列
Profiling
开启
监控SQL语句
trace
开启trace
跟踪分析SQL
索引高级
索引的选择性
回表
索引覆盖
索引下推ICP
前缀索引
索引优化
前缀索引优化
最左前缀匹配
复合索引优化
最左前缀字符串匹配
范围查询
函数转换
Join优化
连接查询的基本流程
Index Nested-Loop Join
Simple Nested-Loop Join
Block Nested-Loop Join
优化原则
小结果集驱动大结果集
减少不必要的字段的查询
排序优化
排序原理
排序算法
单路排序
双路排序
排序的几点思考
排序的优化
尽量保证使用单路排序
去掉不必要的返回字段
适当增加sort_buffer的大小
SQL优化的常用原则
推荐使用自增的和业务无关的主键
索引的个数不用太多
对于Join连接可以适当的调整join_buffer_size
对于Join连接减少不必要的查询字段
优化案例
filesort 优化
连接优化
复合索引_前缀索引
收藏
收藏
0 条评论
回复 删除
下一页