MySQL面试题:一条SQL语句在MySQL中执行过程全解析
一 .MySQL 基础架构分析介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图。
[*]连接/线程处理(连接器): 身份认证和权限相关(如连接处理、授权认证、安全等等)。
[*]查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除)。
[*]解析器: 没有命中缓存的话,SQL 语句就会经过解析器,MySQL会解析查询,并创建内部数据结构(解析树)
就是要先看你的 SQL 语句要干嘛,再检查 SQL 语句语法是否正确。
[*]优化器: 按照 MySQL 认为最优的方案去执行。比如对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等。
[*]执行器: 执行语句,然后从存储引擎返回数据。
简单来说 MySQL 主要分为 Server 层和存储引擎层:
Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog 日志模块。
存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持 InnoDB、MyISAM、Memory 等多个存储引擎,其中 InnoDB 引擎有自有的日志模块 redolog 模块。现在最常用的存储引擎是
二.总结
MySQL 主要分两个层面一个为 Server 层和引擎层,Server 层主要包括连接器、查询缓存、分析器、优化器、执行器,同时还有一个日志模块(binlog),这个日志模块所有执行引擎都可以共用,redolog 只有 InnoDB 有。
引擎层是插件式的,目前主要包括,MyISAM,InnoDB,Memory 等。
SQL 等执行过程分为两类,一类对于查询等过程如下:权限校验—》查询缓存—》分析器—》优化器—》权限校验—》执行器—》引擎
对于更新等语句执行流程如下:分析器----》权限校验----》执行器—》引擎—redo log prepare—》binlog—》redo log commit
来源于:https://blog.csdn.net/weter_drop/article/details/93386581
来源:https://www.cnblogs.com/yunjie0930/p/17944504
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]