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

一条sql查询语句在mysql中的执行过程是什么

mysql的连接器

        我们想要在mysql中执行一条sql查询语句,首先需要连接到mysql服务,那么客户端首先要向mysql服务端发起连接请求,我们可以在客户端用mysql -h [ip] -P [port] -u 用户名 -p 密码  命令向服务端发起连接请求,这个连接请求会先到达mysql的连接器,连接器负责校验我们的用户登录身份,连接器会去mysql的用户权限表查询用户信息进行身份校验,身份校验如果不通过,mysql会向客户端返回错误信息,并且拒绝这次连接;身份验证如果通过了,那么mysql会去创建一个客户端和服务端之间的连接,连接有长连接和短连接,它们适用的场景不同,长连接在建立以后需要长时间保持连接状态,在长时间内的多次sql操作都在这同一个连接上进行,虽然省去了连接创建和销毁的开销,但是它在服务端长时间保存会造成服务端内存开销,如果我们的系统是高并发的,那么会导致很多长连接占用服务端的内存,所以长连接只适用于一次连接之后需要长时间频繁进行数据库访问的非高并发系统;而如果我们的系统要面对高并发访问,那么应该用短连接,短连接是一次连接之后,执行一次sql或者短时间内的有限的几次sql查询之后就将连接关闭的连接形式,它适用于高并发的业务场景。连接器在为客户端创建了连接之后,查询就进入了下一步:mysql的查询缓存。

mysql的查询缓存
        执行查询的时候,mysql会先去查询缓存中查询,mysql用查询缓存缓存了之前执行过的查询结果,查询结果在缓存中用key-value键值对的格式进行存储,key是查询sql语句,value是它对应的查询结果;如果本次查询命中了缓存,那么就直接返回缓存中的结果,避免了真正的数据库查询,提高了查询效率;如果没有命中缓存,那么进入下一步:mysql分析器

mysql分析器
        mysql分析器包括词法分析器和语法分析器,分别对我们的sql语句进行词法分析和语法分析。词法分析器会先将sql语句进行分词,我们的sql语句是由多个字符串和空格组成的,词法分析器会以空格作为分隔符将sql进行分词,得到分词结果集后便知道了这条sql要实现的操作意义了,然后再用语法分析器对sql进行语法分析,如果这个sql不符合sql语法规则,则向客户端返回you have an error in your sql syntax这个错误信息,并拒绝本次查询;如果这个sql符合语法规则,则进入下一步:mysql优化器

mysql优化器
        mysql优化器的作用是根据我们的sql语句制定执行方案,制定一个能让这个sql实现最高的执行效率的执行方案,执行方案制定完毕,进入下一步:mysql执行器

mysql执行器
        mysql执行器的作用是去执行sql语句,它会打开我们的sql所要访问的表,然后调用这张表的引擎所提供的接口去执行sql查询,查询完毕,将结果缓存到查询缓存并返回结果给客户端。

http://www.lryc.cn/news/101980.html

相关文章:

  • 网络互联究竟是需要什么协议相同,什么协议不同?
  • ajax axios json
  • 外观模式——提供统一入口
  • Vue中导入并读取Excel数据
  • CUDA常用函数
  • 72. ElasticSearch常用命令
  • 2023.7.26(同余方程的通解与特解)
  • Diffusion扩散模型学习3——Stable Diffusion结构解析-以图像生成图像(图生图,img2img)为例
  • LangChain||什么是LangChain? LangChain有什么用?
  • 秋招算法备战第28天 | 93.复原IP地址、78.子集、90.子集II
  • Mongodb空间索引的使用以及与Django的对接
  • Windows安装MySQL数据库
  • 聊聊函数式编程中的“式”
  • ubuntu目录分析
  • Python 进阶(三):正则表达式(re 模块)
  • Vue2 第六节 key的作用与原理
  • React之组件的生命周期
  • linux -网络编程-多线程并发服务器
  • Golang之路---02 基础语法——字典
  • Pytorch(三)
  • Linux——进程控制
  • 剑指 Offer 59 - I. 滑动窗口的最大值 / LeetCode 239. 滑动窗口最大值(优先队列 / 单调队列)
  • 【Linux后端服务器开发】IP协议
  • React组件进阶之children属性,props校验与默认值以及静态属性static
  • ceph集群中RBD的性能测试、性能调优
  • texshop mac中文版-TeXShop for Mac(Latex编辑预览工具)
  • 简单认识redis高可用实现方法
  • 搭建git服务器
  • 线程中断机制
  • CollectionUtils工具类的使用