一条SQL的执行过程是怎样的

本文详细描述了SQL执行的七个步骤,包括连接器验证、查询缓存查找、语法和语义分析、优化器选择执行计划、执行器操作以及存储引擎的数据处理,同时提到了MySQL8.0对查询缓存的处理变化。
摘要由CSDN通过智能技术生成

一条 SQL 的执行过程可以大致分为以下几个步骤:

1、连接器:

  • 客户端与数据库建立连接,并发送 SQL 语句给数据库服务。
  • 连接器验证客户端的身份和权限,确保用户有足够的权限执行该 SQL 语句。

2、查询缓存:

  • 连接器首先检查查询缓存,尝试找到与当前 SQL 语句完全相同的查询结果。
  • 如果在缓存中找到匹配的结果,查询缓存直接返回结果,避免了后续的执行过程。

3、分析器:

  • 若查询不命中缓存,连接器将 SQL 语句传递给分析器进行处理。
  • 分析器对 SQL 语句进行语法分析,确保语句的结构和语法正确。
  • 分析器还会进行语义分析,检查表、列、函数等对象的存在性和合法性,并进行权限验证。

4、优化器:

  • 分析器将经过验证的 SQL 语句传递给优化器。
  • 优化器根据统计信息和数据库的规则,生成多个可能的执行计划,这些计划包括不同的索引选择、连接顺序、筛选条件等。
  • 目的是选出最优的执行路径以提高查询性能。

5、执行器:

  • 优化器选择一个最优的执行计划,并将其传递给执行器。
  • 执行器根据执行计划执行具体的查询操作。
  • 它负责调用存储引擎的接口,处理数据的存储、检索和修改。
  • 执行器会根据执行计划从磁盘或内存中获取相关数据,并进行联接、过滤、排序等操作,生成最终的查询结果。

6、存储引擎:

  • 执行器将查询请求发送给存储引擎组件。
  • 存储引擎组件负责具体的数据存储、检索和修改操作。
  • 存储引擎根据执行器的请求,从磁盘或内存中读取或写入相关数据。

7、返回结果:

  • 存储引擎将查询结果返回给执行器。
  • 执行器将结果返回给连接器。
  • 最后,连接器将结果发送回客户端,完成整个执行过程。

需要注意的是,查询缓存在一些场景下可能不太适用,因为它有一定的缺陷和开销。MySQL 8.0 版本开始,默认情况下查询缓存已被废弃。因此,在实际应用中,需要权衡是否使用查询缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值