Mysql语句执行流程图
2021-08-03 22:06:41 9 举报
Mysql
作者其他创作
大纲/内容
假设现在要执行的sql是:select * from t1 where a = 10;(不考虑索引)
.ibd
执行器
优化器
1.调用innodb的接口,获取表里第一行的数据,判断条件是否满足,若不是则跳过,否则将这行数据加入结果集中
Redo log buffer
additional pool
index page
insert buffer page
Innodb存储引擎
undo page
查询缓存
Pager Cleaner Thread
客户端
基准点
获取某表下一行数据
1.先建立socket连接,后发送select语句
FREELIST
修改某行数据
分析器
adaptive hash index
Buffer Pool
double write buffer
获取某表满足条件的第一行数据
热数据区(5/8)
IO Thread
Server层
先做词法分析,根据接收到的sql语句进行识别,比如select表示查询语句,识别出表名、字段名等
ibdata1
lock info
......
控制块
3.如果缓存未命中,分析sql语句
2.调用Innodb接口,获取下一行数据,并执行相同的逻辑判断,直到取到表的最后一行。3.执行完之后,将结果集返回客户端
决定使用哪个索引,表的join顺序
bin log
获取某表第一行数据
undo001
2.根据select语句查询缓存
Purge Thread
5..执行解析后的sql语句
连接器
获取某表满足条件的下一行数据
Mysql8.0中已无查询缓存,因为查询缓存的失效非常频繁。只要某个表更新,这个表对应的查询缓存都会失效
LRULIST
4.优化sql语句
redo log
Master Thread
FLUSHLIST
再做语法分析,判断sql语句是否正确
system tablespace
收藏
0 条评论
下一页