MySQL查询select语句的执行流程
1.客户端需要与MySQL服务端建立连接;
2.在缓存功能打开的情况下,查询缓存,如果缓存存在相应的结果,直接返回,若不存在,则进入解析器;
3.查询语句会通过解析器进行词法解析和语法解析,完成语法解析后会生成解析树;
4.进入预处理阶段,检查上一步生成的解析树,解决解析器无法解析的语义,预处理完成后会生成一个新的解析树;
5.进入查询优化器,根据解析树生成不同的执行计划,而MySQL使用的是基于开销(cost)的优化器,即哪个执行计划开销最小则用哪个执行计划;
6.执行引擎使用执行计划操作存储引擎,一方面将结果返回给客户端,一方面将结果存放于内存/磁盘;
简略流程图:
InnoDB内存结构中有什么?
1.Buffer Pool:内存缓冲区,能够提高读写效率。
2.Change Buffer:当数据页不是唯一索引以及不存在重复数据的情况下,会缓存修改记录,提升更新语句(Insert、Delete、Update)的执行速度。
3.Adaptive Hash Index:InnoDB会监控对表上各索引页的查询,如果观察该数据被访问的频次符合规则,那么就建立哈希索引来加快数据访问的速度。
4.Log Buffer: 用于保存要写入磁盘的日志文件数据,日志缓冲区的内容会定期刷新到磁盘中。如果需要更新、插入、删除多行数据的事务,则增加日志缓冲区可以节省磁盘I/O。
InnoDB架构图:
本文详细阐述了MySQL查询从连接到执行的全过程,包括缓存利用、解析器、预处理、优化器及执行引擎的作用,并深入剖析了InnoDB内存结构中的关键组件如BufferPool、ChangeBuffer等。
712

被折叠的 条评论
为什么被折叠?



