码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL : 彻底搞懂一条SQL的执行过程


    整体流程

    在这里插入图片描述

    组件介绍

    连接器

    处理客户端的连接,一般处理我们这个命令,判断是否满足接入server的条件

    mysql ‐h host[数据库地址] ‐u root[用户] ‐p root[密码] ‐P root
    
    • 1

    查询缓存

    在8.0之前,如果用户开启了查询缓存的开关,那么客户端发起请求连接之后,首先会去缓存中查询,缓存中存储的key是查询语句,value是 查询结果,如果缓存中没查到,就会执行下一步了,进入分析器阶段,当然了,如果查到缓存就回直接返回,如果对应的数据被update了,缓存将会同时被清除。

    为什么8.0删除了缓存呢?

    因为如果对一个表的数据更新压力比较大,就回导致这样一个现象:我刚把数据放进缓存后,过了一会就被更新数据操作,将缓存删除了,所以加入缓存就没有一点益处了,综合考虑之后,加入缓存这个鸡肋操作后,往往是弊大于利,索性在8.0就直接给删除了。

    分析器

    如果查询缓存没命中(或没有开启缓存),那么会直接来到这一层:分析器
    进入分析器后,首先需要经过词法分析这一个关,如果这一关没过,就直接给你抛出错误了
    通俗的来说词法分析器主要做了什么:

    • 解析所有关键词,如 select、update、insert、from、where、表名、字段名、group by 等
    • 如果解析出来的标识符不对,则会抛出异常,拒绝执行下一步

    经过分析器之后,我们最终就能生成一个语法树,后续执行引擎执行语句,就得靠这个语法树进行

    优化器

    在经过分析器之后,mysql需要做的是对我们的sql进行一定的优化,那么它做了哪些优化呢

    • 决定使用哪个索引
    • 调整where 字段位置:如建立了一个联合索引 abc,但是我们的where 条件是这么写的 where b =1 and a=2 and c=4,这样写肯定不满足最左前缀匹配原则的,所以mysql决定给你优化下,直接调整成这样:where a=2 and b=1 and c=4,最终使用到了索引;但是如果 写成where b=1 and a=2,没有c字段,mysql是不会给你优化的。

    执行器

    调用不同的索引存储引擎API,执行解析后的sql,

  • 相关阅读:
    大数据信用报告如何查询?有哪些需要注意的?
    二、什么是寄存器
    利用mAP计算yolo精确度
    el-table中的toggleRowSelection 选中目标没有选中效果
    深度学习标注工具(包括自动标注)总结——持续更新
    手把手教你使用Tensorflow2.0搭建循环神经网络
    红黑树(C语言实现)
    [附源码]Python计算机毕业设计Django公益组织登记与查询系统论文
    常见网络攻击及防御方法总结(XSS、SQL注入、CSRF攻击)
    AMR论文阅读之:ATP: AMRize Then Parse! Enhancing AMR Parsing with PseudoAMRs
  • 原文地址:https://blog.csdn.net/weixin_34311210/article/details/127757768
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号