当前位置: 首页 > news >正文

sql执行过程

客户端->连接器->查询缓存->解析器(词法分析、语法分析)->预处理器->优化器->执行器->存储引擎

1.客户端

在程序或命令行里输入SQL语句后,通过连接器进入MySQL。

2.连接器

建立 TCP 连接,校验用户的账号密码,并维护连接(分为长连接 / 短连接);连接建立后,会关联该用户的权限信息(后续权限检查基于此)。

3.查询缓存(MySQL 8.0 已移除)

以相同 SQL(文本完全一致)为Key查询缓存,如果命中缓存则直接返回,否则继续往下执行。

4.解析器

词法分析:将SQL拆分为关键字(SELECT、FROM)、表名、列等。

语法分析:根据SQL语法规则,生成语法树,判断SQL是否合法。

5.预处理器

检查表和字段是否存在,将select*中的*扩展为表中所有的列,解析别名、处理常量折叠、校验数据类型兼容性。

6.优化器

决定如何执行SQL,主要优化内容:选择索引、表连接方式、优化表达式,选择查询成本最小的执行计划。

7.执行器

先进行初步权限校验(如是否有目标表的操作权限),根据执行计划,通过存储引擎 API 调用底层存储引擎,执行过程中若有特殊操作,再次确认权限,并处理锁(如行锁、表锁)。

8.存储引擎

根据执行器的指令完成具体数据操作,将结果返回给执行器;执行器再将结果逐层返回给客户端(若开启查询缓存,会同时将结果存入缓存)。

 

http://www.dtcms.com/a/362599.html

相关文章:

  • Tomcat 全面指南:从目录结构到应用部署与高级配置
  • Java-Spring入门指南(一)Spring简介
  • WPF曲线自定义控件 - CurveHelper
  • 大模型是如何“学会”思考的?——从预训练到推理的全过程揭秘
  • 【完整源码+数据集+部署教程】PHC桩实例分割系统源码和数据集:改进yolo11-Faster-EMA
  • 无需服务器,免费、快捷的一键部署前端 vue React代码--PinMe
  • 搭建分布式Hadoop集群[2025] 实战笔记
  • 【golang长途旅行第36站】golang操作Redis
  • 【自记】Python 中 简化装饰器使用的便捷写法语法糖(Syntactic Sugar)示例
  • ARM汇编记忆
  • 【53页PPT】华为制造行业数字化转型工业互联网智能制造解决方案(附下载方式)
  • MySQL事务+MVCC(精简版,包教包废)
  • 2025华为最值得入的耳机,真的赢麻了!
  • 结构抗震与土木工程研究
  • SylixOS 下的信号系统
  • Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
  • Chrome浏览器调用ActiveX控件之allWebOffice在线编辑控件
  • JD潜在前端二面高频题解析
  • mysql5.6+分页时使用 limit+order by 会出现数据重复问题
  • 蓝桥杯算法之基础知识(5)
  • 基于Spark的新冠肺炎疫情实时监控系统_django+spider
  • 数据结构与算法个人学习代码笔记包含leetcode,海贼oj,蓝桥杯,ACM
  • 华为Fit4:腕间助手,守护你的健康,带你开启智慧生活
  • 【字节拥抱开源】 UXO 团队开源 USO: 通过解耦与奖励学习实现的统一风格与主题驱动生成
  • 2025最新“Java 面试八股文 + 各大厂的面试真题”限时开源
  • 美团 LongCat 开源大模型60 亿参数 MoE 架构,赋能开发者加速 AI 应用落地
  • 本地搭建并使用 Redmine 详细教程
  • CICD 持续集成与持续交付
  • SGLang推理引擎--高效的开源部署方案
  • 【第四章:大模型(LLM)】09.最强开源大模型:Llama3 原理介绍与实现-(6)Llama2 Llama3代码实现