MySQL中SQL语句是如何运作其执行机制的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3473个文字,预计阅读时间需要14分钟。
摘要+了解一个查询语句的执行流程,介绍了执行过程中涉及的处理器模块。
内容:系统理解了查询语句的执行流程,并介绍了流程中涉及的处理器模块。相信你还记得,一条查询语句的执行过程通常经过连接器、分析器、优化器、执行器等功能模块。
摘要
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?
我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c:
create table T(ID int primary key, c int);如果要将 ID=2 这一行的值加 1,SQL 语句就会这么写:
update T set c=c+1 where ID=2;一、SQL执行的流程
图1.mysql架构原理图
SQL执行语句前要先连接数据库,在查询缓存,但是在一个表上有更新的时候,跟这个表有关的查询缓存会失效,所以这条语句就会把表 T 上所有缓存结果都清空。所以在mysql8中没有的缓存这个逻辑。接下来,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。
与查询流程不一样的是,更新流程还涉及两个重要的日志模块。
二、重要的日志模块 redo log
假设酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。
本文共计3473个文字,预计阅读时间需要14分钟。
摘要+了解一个查询语句的执行流程,介绍了执行过程中涉及的处理器模块。
内容:系统理解了查询语句的执行流程,并介绍了流程中涉及的处理器模块。相信你还记得,一条查询语句的执行过程通常经过连接器、分析器、优化器、执行器等功能模块。
摘要
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?
我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c:
create table T(ID int primary key, c int);如果要将 ID=2 这一行的值加 1,SQL 语句就会这么写:
update T set c=c+1 where ID=2;一、SQL执行的流程
图1.mysql架构原理图
SQL执行语句前要先连接数据库,在查询缓存,但是在一个表上有更新的时候,跟这个表有关的查询缓存会失效,所以这条语句就会把表 T 上所有缓存结果都清空。所以在mysql8中没有的缓存这个逻辑。接下来,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。
与查询流程不一样的是,更新流程还涉及两个重要的日志模块。
二、重要的日志模块 redo log
假设酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。

