MySQL中SQL语句是如何运作其执行机制的?

2026-05-21 00:330阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3473个文字,预计阅读时间需要14分钟。

MySQL中SQL语句是如何运作其执行机制的?

摘要+了解一个查询语句的执行流程,介绍了执行过程中涉及的处理器模块。

内容:系统理解了查询语句的执行流程,并介绍了流程中涉及的处理器模块。相信你还记得,一条查询语句的执行过程通常经过连接器、分析器、优化器、执行器等功能模块。

摘要

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?

我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键 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分钟。

MySQL中SQL语句是如何运作其执行机制的?

摘要+了解一个查询语句的执行流程,介绍了执行过程中涉及的处理器模块。

内容:系统理解了查询语句的执行流程,并介绍了流程中涉及的处理器模块。相信你还记得,一条查询语句的执行过程通常经过连接器、分析器、优化器、执行器等功能模块。

摘要

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?

我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键 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

假设酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。

阅读全文