栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql数据库SQL执行流程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql数据库SQL执行流程

一、sql执行流程分析

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

客户端提交一条sql语句,先在查询缓存中查询,如果缓存没有命中,将会进行查表操作。查表的流程总结过为如下:
(1)将sql交给解析器处理,生成一个解析树。
(2)预处理器会处理解析器,重新生成一个解析器,这个过程中将会改写sql。
(3)改写后的解析器交给查询优化器,查询优化器生成sql的执行计划。
(4)执行计划交给执行引擎调用存储引擎的的API接口,查询数据。
(5)最终的结果由执行引擎返回给客户端,如果看,开启查询缓存的话将会返回给客户端。

二、sql执行顺序总结

(1) FROM
(3) JOIN
(2) 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、查询优化器执行过程

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

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

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

EXPLAIN  SELECT * from addr_longxi


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

  1. 优化器开关
·show variables like 'optimizer_switch


3、Processlist

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

常见异常行为有:
(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
将结果正在发送给客户端。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号