首页 抖音热门文章正文

关于一条SQL语句在MySQL中的执行过程

抖音热门 2025年09月10日 12:30 1 admin

输入一条SQL,到显示结果,重点有下面4个过程。

关于一条SQL语句在MySQL中的执行过程

  1. 连接器。先通过连接器校验权限。
  2. 分析器。使用分析器对SQL的词法、语法进行分析,构建解析树
  3. 优化器。通过优化器选择合适的索引和表连接顺序,确定最佳执行计划。
  4. 执行器。调用引擎层查询数据,返回结果集。
关于一条SQL语句在MySQL中的执行过程

连接器

客户端的SQL到达MySQL时,首先接触的是MySQL的连接器。连接器会校验当前账号的账号密码,无权限会报错 Access denied for user。连接成功后,如果没有后续操作,该连接会被标记为空闲状态,到达wait_timeout所表示的时间(默认为8小时),会断开连接。

分析器

分析器负责对SQL进行词法分析、语法分析。

词法分析包括判断语句属于什么类型,查询的表,列,以及携带一些什么参数等等。比如,MySQL会通过语句的select判断这是一条查询语句;通过from后面的user关键词判断目标表为user,同构select后面的*判断所需要的列名。

基于词法分析的结果,语法分析会判断语句是否为正确的SQL语句,如果语法有问题,会抛出错误信息You have an error in your SQL syntax; check the manual.....

关于一条SQL语句在MySQL中的执行过程

优化器

优化器会对SQL语句进行优化判断,包括判断语句里面的索引字段,选择使用哪个索引;如果有join关键字,调整表的链接顺序。explain语句可以让MySQL告诉我们它们的优化决定策略。

关于一条SQL语句在MySQL中的执行过程

执行器

最后的步骤是执行器。

执行器首先会判断账号对user有无权限查询,如果没有权限会拒绝本次查询。如果有权限,会根据存储引擎提供的接口,进行数据查询,然后将整个表的数据作为数据集返回客户端。

发表评论

泰日号Copyright Your WebSite.Some Rights Reserved. 网站地图 备案号:川ICP备66666666号 Z-BlogPHP强力驱动