SQL执行流程

在这里插入图片描述

  1. 客户端发送查询:客户端(例如 MySQL 客户端工具或应用程序)通过网络将 SQL 查询语句发送到 MySQL 服务器。

  2. 服务器接收查询:MySQL 服务器接收到客户端发送的查询语句,并进行初步处理。

  3. 解析器解析查询

    1. 词法分析(Lexical Analysis):词法分析器(Lexer)将SQL语句拆分成一系列的词法单元(Tokens),每个词法单元是SQL语句的最小组成部分,如关键字、标识符、操作符和字面值等。

    2. 语法分析(Syntax Analysis):语法分析器(Parser)根据SQL语法规则,将词法单元序列解析成一个语法树(Parse Tree)或抽象语法树(Abstract Syntax Tree,AST)。语法树表示了SQL查询的结构和层次关系。

  4. 预处理器处理查询

  • 预处理器对解析树进行进一步的处理,例如进行权限检查,确保用户有权限执行该查询。
  • 检查表和列是否存在,解析别名等。
  1. 查询优化器优化查询
  • 查询优化器(Optimizer)对解析树进行优化,生成执行计划(Execution Plan)。
  • 优化器会考虑多种执行方案,选择代价最小的方案。这包括选择合适的索引、连接顺序等。
  1. 执行计划执行查询
  • 执行计划被传递给执行引擎(Execution Engine),执行引擎按照执行计划逐步执行查询操作。
  • 执行过程中,执行引擎会访问存储引擎(Storage Engine)以读取或写入数据。
  1. 存储引擎访问数据
  • 不同的存储引擎(如 InnoDB、MyISAM 等)有不同的数据存储和检索机制。执行引擎通过存储引擎访问实际数据。
  • 存储引擎会将数据从磁盘读取到内存中,进行必要的操作(如锁定行、读取索引等)。
  1. 执行引擎返回结果
  • 执行引擎将查询结果返回给 MySQL 服务器。
  • 服务器将结果集进行处理,例如格式化输出等。
  1. 服务器返回结果给客户端
  • 处理后的结果集通过网络返回给客户端。
  • 客户端接收到结果集,并进行相应的展示或处理。
  1. 清理和释放资源:MySQL 服务器清理此次查询过程中使用的资源,关闭相关连接,释放内存等。
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值