Mysql执行原理
2021-01-27 23:22:40 27 举报
待完善
作者其他创作
大纲/内容
Client
磁盘文件
Innodb存储引擎
刷脏
SQL语句
2. 预处理器解析器将SQL语句模板化或者说参数化(参数用占位符来表示),减少编译次数,提高执行效率
1. SQL语句进入Mysql Server层之后,经过解析,预处理,优化后,生成执行计划。存储引擎提交事务后把DDL语句写入biglog中2. MySql执行器利用执行计划调用存储引擎执行 2.1 存储引擎从buffer pool中找到对应的页数据,如果没有,从磁盘中读取缓存到buffer pool中到页(根据查询相同数据的频率 缓存到冷区和热区(热区/冷区 = 5/3),大于1s缓存到冷区,小于1s缓存到热区);如果对应到页中有对应到数据,直接返回给Server层 2.2 SQL执行过程中会产生一条redo log,并记录其状态为pre。存储引擎提交事务后,标记该redo log为commint状态 注: 如何执行的SQL会产生insert/update/delete操作时,会产生undo log日志。 undo_log提供MVCC机制: 事务提交时放入undo log链表,(update/delete语句)等待purge机制进行最后的磁盘IO操作。
3. 优化器理解为发现执行SQL查询的最佳方案,根据数据结构和数据量查询等时候是否使用索引等
4.生成执行计划
DDL语句写入
读数据
执行器利用执行计划调用存储引擎进行执行
3.优化器
buffer pool
Server层
binlog
1.解析器
1. 解析器主要做了两件事情,词法分析和语法分析。 词法和语法分析:mysql使用lex词法分析器,yacc语法分析器进行分析,最后保存到lex对象结构中
写入
Mysql如何执行一条select语句
redo log
2.预处理器
4. 执行计划体现在 EXPLAIN分析一条SQL语句时展示出来的信息
Mysql后台线程
undo log
收藏
0 条评论
下一页
为你推荐
查看更多