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

【mysql】执行过程,背诵版

sql执行再mysql的执行过程

1. 建立连接
  • sql通过tcp/ip发送到服务器
  • 服务器检查用户名,密码,权限
  • 创建线程处理连接

如果是sql8.0之前,select会先从缓存中查找,命中则返回,由于表结构变更会导致缓存失效,已废除

2.解析和优化
  • 词法分析:拆分成token
  • 语法分析:检查语法
  • 生成解析树

解析树是SQL语句经过解析器处理后的结构化表示形式。它就像把一句SQL语句"拆解"成一个树状的结构图

以SQL语句 SELECT name FROM users WHERE age > 18 为例,它的解析树可能大致如下:

          SELECT_STATEMENT/      |      \SELECT    FROM    WHERE|         |        |name      users     CONDITION|age > 18
  • 预处理器:
    • 检查表列是否存在,
    • 检查权限
    • 视图展开
  • 查询优化器:
    • 基于成本优化cbo选择最佳执行方案
    • 生成执行计划 可以通过explain查看
3.执行查询sql
  • innodb执行:
  1. 缓冲池检查,看所需数据是否在内存页
  2. 磁盘读取,没有就查磁盘
  3. 加锁,(排他锁/共享锁)
  4. 事务处理:写入undolog redolog
  5. 返回结果
4.返回结果
  • 返回客户端
  • 连接保活或者关闭

https://github.com/0voice

http://www.xdnf.cn/news/238393.html

相关文章:

  • 2025平航杯—团队赛
  • 企业的呼入语音智能体是什么样子?
  • 启动Hadoop集群及集群效果
  • 企业数字化转型新动向日渐明鲜,当以“AI为中心”而驱动
  • 分治算法求序列中第K小数
  • RAII 示例
  • 2025-03 机器人等级考试四级理论真题 4级
  • Dify添加ollama模型失败:NewConnectionError: Failed to establish a new connection
  • MCP与开源社区的共赢之道:携手推动技术创新
  • GRE隧道
  • Git Stash 详解
  • windows系统常用快捷键(CMD常用命令,DOS常用命令)
  • C++类和对象(中)
  • PostgreSQL中的SSL
  • 设备目录树--个人笔记
  • linux中sigint和sigterm的区别
  • react-11使用vscode开发react相关扩展插件(相关的快捷生成)
  • 开芯课堂丨视觉与4D毫米波前融合感知算法设计
  • [计算机科学#6]:从锁存器到内存,计算机存储的构建与原理
  • 航电系统之网络控制运动技术篇
  • C++Primerplus编程练习 第三章
  • Vue3源码学习-提交限制
  • 标准解读:数据要素安全可信流通技术标准【附全文阅读】
  • 驾驭音质,尽享四通道力量——AXPA17851
  • 若依定时任务
  • 【go】简单问答八股,go的理解,接口,锁,channel
  • 处理vue3热加载后axios的请求重复访问的问题
  • 深入理解C++17中的std::string_view
  • LibAI Lab走进西浦:重塑“AI+建筑”教育
  • 做了数据中台,还需要做数据治理吗?