一条SQL语句的执行历程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【6月更文挑战第8天】该文介绍了SQL执行的流程。从客户端连接MySQL服务器开始,SQL语句首先尝试命中缓存,如果未找到,则进入解析优化阶段,包括词法和语法解析,并根据内部逻辑优化SQL。接下来是执行阶段,涉及预处理和执行,利用索引等加速查询。最终,执行结果返回给客户端,整个过程包括权限检查、打开表、排序、创建临时表等步骤,完成后清理资源。

在数据库管理系统中,每当你敲下一条SQL,按下执行键的时候,不管这条SQL是简单还是复杂,从按下执行键到返回数据结果展现出来这个过程都是一致的,每一步都有其存在的必要意义。那么下面就来详细分析一条SQL从按下执行键之后经历了哪些过程?

连接客户端

首先你要有一个可以执行SQL的可视化的客户端,并且已经连接好了Mysql服务端,比如这样

命中缓存

然后你编写好一条SQL之后,按下执行键,这个时候客户端就可以向 MySQL 服务发送 SQL 语句了,MySQL 服务收到 SQL  语句后,就会解析出 SQL 语句的第一个字段,看看是什么类型的语句。如果查询语句,MySQL 就会先去查询缓存里查找缓存数据,如果缓存中有这条  SQL对应的数据内容,那么直接返回,如果没有则继续向下执行。

解析优化

在正式执行 SQL 查询语句之前, MySQL 会先对 SQL 语句进行解析,解析包括词法解析,语法解析等,验证你执行的这条 SQL  可以被执行。并且会按照Mysql的内部逻辑对你提供的 SQL 进行优化,优化后的 SQL 会按照索引、主键等优化信息加快 SQL  语句的执行效率。

SQL执行

那么经过解析优化之后,那么你的 SQL 就算进入执行状态了,接着就要进入执行 SQL 查询语句的流程了,每条SELECT 查询语句流程主要可以分为下面这三个阶段:预处理阶段、执行阶段,在这一阶段同样会执行优化,最后执行完成之后就可以成功返回数据了。

执行结果

比如这里有一条 SQL 语句

select * from crm_account_screen_performance_target where target_start_time <='2024-03-18 00:00:00' and target_end_time >= '2024-03-18 00:00:00';

aohr6odutqrw6_7952661613dd4e709117ee34218eb4f6.png

那么我们也可以看一下 SQL 客户端工具对于这条 SQL 执行过程的剖析

aohr6odutqrw6_8a4f33eca9344694a62e11a4023585bd.png

在整个SQL 执行过程中,从你敲下SQL 点击【执行】命令的那一刻,SQL 的历程就开始了starting。SQL会首先校验当前执行 SQL 的用户是否有权限 checking permissions,随后有权限,继续向下打开需要执行的数据表 Opening tables,然后开始初始化 SQL init ,锁定系统执行环境 System lock,随后SQL 执行器会对当前 SQL 进行优化 optimizing 以及 统计 statistics。继续向下看,进入到准备 preparing 阶段,然后数据库服务会创建临时表用于存放临时查询数据 Creating tmp table ,并对查询的结果进行排序 Sorting result,随后执行 executing,执行完成之后发送数据到请求方 Sending data,创建排序索引 Creating sort index,然后结束执行操作 end,随后移除临时表 removing tmp table,本次查询结束 query end,关闭数据库表 closing tables,最后释放整个查询涉及到的操作 freeing items,并记录本次慢查询日志 logging slow query,最后完成全部本次 SQL 执行操作内容并 cleaning up。整个 SQL的执行过程可以通过执行过程中涉及到的命令做一个详细的分析,感兴趣的可以自己尝试看看 SQL 执行过程。

相关文章
|
13天前
|
SQL 存储 数据库
一条SQL语句的执行究竟经历了的过程
在数据库的世界里,SQL语句是用户与数据库交互的桥梁,也是核心。每当我们在数据库管理系统中键入一条SQL查询语句并按下回车键时,这条语句就会经历一系列复杂而精细的执行过程,便踏上了它在数据库内部的旅程,这个过程不仅复杂,而且精细,涉及多个阶段和组件的协同工作,确保数据的准确性和查询的高效性。那么本文就将详细介绍这些过程,以及每一步是如何协同工作以确保信息的准确无误,欢迎评论区留言交流。
15 1
一条SQL语句的执行究竟经历了的过程
|
11月前
|
SQL 存储 运维
|
11月前
|
SQL 前端开发 数据库
案例02-sql语句优化
案例02-sql语句优化
|
11月前
|
SQL 监控 数据库
详谈sql语句优化
SQL语句优化是提高数据库性能的重要手段之一。下面将详细介绍SQL语句优化的几个方面。
106 0
|
SQL 存储 Oracle
sql是什么?以及sql基础语句(一)
sql是什么?以及sql基础语句
125 0
|
SQL 存储 Oracle
工作中,我们经常用到哪些SQL语句呢?
工作中,我们经常用到哪些SQL语句呢?
188 1
工作中,我们经常用到哪些SQL语句呢?
|
SQL Oracle 关系型数据库
sql是什么?以及sql基础语句(二)
sql是什么?以及sql基础语句
70 0
|
SQL 关系型数据库 MySQL
SQL常用语句(陆续更新)
SQL常用语句(陆续更新)
|
SQL 存储 缓存
面试官:请分析一条SQL语句的执行
我感到在对全局了解不够清晰的时候,去深究一个知识点往往会事倍功半。所以打算通过这篇文章,分析SQL语句从头到尾的执行,串连一下MySQL当中的基础知识点。
101 0
面试官:请分析一条SQL语句的执行
|
SQL 存储 缓存
Spark SQL中掌控sql语句的执行 - 了解你的查询计划
Spark SQL中掌控sql语句的执行 - 了解你的查询计划
565 0
Spark SQL中掌控sql语句的执行 - 了解你的查询计划