MySQL SQL的完整处理流程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL SQL的完整处理流程

MySQL SQL的完整处理流程

一、sql执行流程分析

一条sql从客户端发起,在mysql中经过了一系列的流程,归结为如下图所示:

image.png

客户端提交一条sql语句,先在查询缓存中查询,如果缓存没有命中,将会进行查表操作。查表的流程总结过为如下:

(1)将sql交给解析器处理,生成一个解析树。 (2)预处理器会处理解析器,重新生成一个解析器,这个过程中将会改写sql。 (3)改写后的解析器交给查询优化器,查询优化器生成sql的执行计划。 (4)执行计划交给执行引擎调用存储引擎的的API接口,查询数据。 (5)最终的结果由执行引擎返回给客户端,如果看,开启查询缓存的话将会返回给客户端。

二、sql执行顺序总结

  1. FROM
  2. JOIN
  3. ON
  4. WHERE
  5. GROUP
  6. WITH {CUBE|ROLLUP}
  7. HAVING
  8. SELECT
  9. DISTINCT
  10. ORDER BY
  11. LIMIT

三、查询优化器与执行计划

1、查询优化器

查询优化器的主要作用是用来生成sql的执行计划,查询优化器是数据库的核心大脑所在,从某种意义上来说,优化sql,本质是理解优化器的执行行为。在mysql中优化的依据是sql的执行成本,执行计划的生成是基于成本的,成本的决定是依据sql的执行行数。优化器工作的前提是了解数据,工作的目的是解析数据,生成执行计划。

2、查询优化器执行过程

image.png

如上图所示:

  1. 查询优化器有语法分析,词法分析,语义检查等过程。
  2. 预处理阶段(查询改写)
  3. 查询优化阶段:主要有逻辑优化,物理优化。
    3.1. 逻辑优化:把sql交给查询优化器之后,会根据生成的解析树,对sql做一些改写操作。
    3.2. 物理优化;过程是优化器生成获取数据去扫描数据的路径。
  4. 查询优化器优化依据,来自于代价估算器估算结果(它会调用统计信息作为计算依据)
  5. 交由执行器执行。

四、查看和干预sql执行计划

  1. 执行计划

查看执行计划可以采用explain关键字。


EXPLAIN  SELECT * from addr_longxi

image.png

当我们发现sql的执行计划不合理时,可以通过添加索引和强制驱动表的顺序,通过hints方式干预sql的执行计划。另外,mysql优化器的一些参数也可以进行修改,来控制优化器的一些行为。

  1. 优化器开关


·show variables like 'optimizer_switch

image.png

  1. Processlist

另一种观测MySQL行为的常用手段就是Processlist。通过Processlist,我们可以看到当前在MySQL中执行的所有SQL语句,有没有异常的会话或比较特殊的SQL状态。查看会话操作可以通过2种途径:

第一,show [full] processlist;

第二,information_schema.processlist。

image.png

常见异常行为有:

  1. Coping to tmp table:出现在某些Alter Table语句的Copy Table操作.
  2. Copying to tmp table on disk:由于临时结果集大于tmp_table_size 将临时表中的数据转换到磁盘中
  3. Converting HEAP to MyISAM:线程正在从内部内存临时表到磁盘MYISA临时表
  4. Creating sort index:正在使用内部临时表处理Select查询。
  5. Sorting index:磁盘排序操作的一个过程。
  6. Sending data:将结果正在发送给客户端。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
2天前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
29天前
|
存储 SQL NoSQL
|
2月前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
48 1
|
1月前
|
SQL 关系型数据库 MySQL
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
38 0
|
1月前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
31 0
|
2月前
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
47 0
|
2月前
|
SQL 存储 关系型数据库
mysql SQL必知语法
本文详细介绍了MySQLSQL的基本语法,包括SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等关键字的使用,以及数据库操作如创建、删除表,数据类型,插入、查询、过滤、排序、连接和汇总数据的方法。通过学习这些内容,读者将能更好地管理和操
22 0
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
21天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
36 4