一条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查询,查询完毕,将结果缓存到查询缓存并返回结果给客户端。
相关文章:
一条sql查询语句在mysql中的执行过程是什么
mysql的连接器 我们想要在mysql中执行一条sql查询语句,首先需要连接到mysql服务,那么客户端首先要向mysql服务端发起连接请求,我们可以在客户端用mysql -h [ip] -P [port] -u 用户名 -p 密码 命令向服务端发起连接请求,这个连接请…...
网络互联究竟是需要什么协议相同,什么协议不同?
混淆概念的几个说法: 说法1: “以太网交换机不可以实现采用不同网络层协议的互联” 原因:以太网交换机是数据链路层的设备,不懂网络层的知识 说法2: “网桥可互联不同的物理层、不同的MAC子层以及不同速率的以太网”…...
ajax axios json
目录 一、ajax概述 1. 概念 2. 实现方式 (1)原生的JS实现方式(了解) (2) JQeury实现方式 二、axios 介绍 三、axios使用 1. axios 发送get/post请求 2. axios验证用户名称是否存在 四、json 1. …...
外观模式——提供统一入口
1、简介 1.1、概述 在软件开发中,有时候为了完成一项较为复杂的功能,一个类需要和多个其他业务类交互,而这些需要交互的业务类经常会作为一个完整的整体出现,由于涉及的类比较多,导致使用时代码较为复杂。此时&#…...
Vue中导入并读取Excel数据
在工作中遇到需要前端上传excel文件获取到相应数据处理之后传给后端并且展示上传文件的数据. 一、引入依赖 npm install -S file-saver xlsxnpm install -D script-loadernpm install xlsx二、在main.js中引入 import XLSX from xlsx三、创建vue文件 <div><el-uplo…...
CUDA常用函数
cudaDeviceSynchronize cudaDeviceSynchronize是一个CUDA函数,用于同步当前设备上的所有CUDA流。它会阻塞调用它的线程,直到所有设备上的CUDA流都执行完为止。这可以确保在进行后续的CUDA操作时,先前的操作已经完成。 在CUDA程序中࿰…...
72. ElasticSearch常用命令
索引管理 1新建索引 curl -XPUT http://10.42.172.35:9200/index012 读写权限 curl -XPUT -d {"blocks.read":false} http://10.42.172.35:9200/index01/_settings3 查看索引 单个 curl -XGET http://10.42.172.35:9200/index01/_settings多个 curl -XGET http…...
2023.7.26(同余方程的通解与特解)
Water(扩欧求特解与通解) 题意:给容量分别为A与B的水杯,问确切喝到C水的最小操作次数 有4种操作:选一杯全喝,选一杯全部倒掉,选一杯装满,将一杯的水尽量倒到另一杯中 思路:只有AxByC有解时才能确…...
Diffusion扩散模型学习3——Stable Diffusion结构解析-以图像生成图像(图生图,img2img)为例
Diffusion扩散模型学习3——Stable Diffusion结构解析-以图像生成图像(图生图,img2img)为例 学习前言源码下载地址网络构建一、什么是Stable Diffusion(SD)二、Stable Diffusion的组成三、img2img生成流程1、输入图片编…...
LangChain||什么是LangChain? LangChain有什么用?
从Auto-GPT说起: Auto-GPT可以调用本地电脑工具处理复杂信息;Auto-GPT可以围绕目标查阅资 料、“独立思考”、及时反馈、并 及时调整下一步操作…Auto-GPT的诞生,创造了大家 对“将LLM作为智慧大脑来高效 处理综合复杂任务”的想象;首次尝试串联大语言模…...
秋招算法备战第28天 | 93.复原IP地址、78.子集、90.子集II
93. 复原 IP 地址 - 力扣(LeetCode) 这个问题可以通过深度优先搜索(DFS)的方法来解决。我们要做的就是在字符串的每个可能位置插入点,然后检查生成的每一部分是否在 0-255 的范围内,以及是否没有前导零(除非这一部分本…...
Mongodb空间索引的使用以及与Django的对接
Mongodb的空间索引 Mongodb数据库大家都非常熟悉,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能,数据结构由键值(key>value)对组成。MongoDB 文档类似于 JSON 对…...
Windows安装MySQL数据库
MySQL数据库安装 MySQL下载 下载地址:https://dev.mysql.com/downloads/mysql/ 可以选择下载msi或zip,以下为zip模式安装步骤 下载了mysql的zip安装包之后解压即可; Windows安装步骤 初始化MySQL,并记录生成的用户密码root的随机…...
聊聊函数式编程中的“式”
当谈到函数式编程的“式”时,通常指的是函数的组合、转换和应用,以及处理数据的方式和风格。在函数式编程中,式是用来构建程序逻辑的基本单元。 下面更详细解释函数式编程中的几个关键式: 函数的组合: 函数式编程中…...
ubuntu目录分析
在Ubuntu根目录下,以下是一些常见文件夹的含义: /bin:存放可执行文件,包含一些基本的命令和工具。 /boot:存放启动时所需的文件,如内核和引导加载程序。 /dev:包含设备文件,用于与硬…...
Python 进阶(三):正则表达式(re 模块)
❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 1. 导入re模块2. re模块中的常用函数2.1 re.search()2.2 re.findall()2.3 re.sub()2.4…...
Vue2 第六节 key的作用与原理
(1)虚拟DOM (2)v-for中的key的作用 一.虚拟DOM 1.虚拟DOM就是内存中的数据 2.原生的JS没有虚拟DOM: 如果新的数据和原来的数据有重复数据,不会在原来的基础上新加数据,而是重新生成一份 3. Vue会有虚拟…...
React之组件的生命周期
React之组件的生命周期 一、概述二、整体说明三、挂载阶段四、更新阶段五、卸载阶段 一、概述 生命周期:一个事务从创建到最后消亡经历的整个过程组件的生命周期:组件从被创建到挂载到页面中运行,再到组件不用时卸载的过程意义:理解组件的生…...
linux -网络编程-多线程并发服务器
目录 1.三次握手和四次挥手 2 滑动窗口 3 函数封装思想 4 高并发服务器 学习目标: 掌握三次握手建立连接过程掌握四次握手关闭连接的过程掌握滑动窗口的概念掌握错误处理函数封装实现多进程并发服务器实现多线程并发服务器 1.三次握手和四次挥手 思考: 为什么…...
Golang之路---02 基础语法——字典
字典 字典(Map 类型),是由若干个 key:value 这样的键值对映射组合在一起的数据结构。 key 不能是切片,不能是字典,不能是函数。 字典初始化 方式:map[KEY_TYPE]VALUE_TYPE //1.var map1 map[string]int…...
别再死磕SAR ADC了!聊聊那些被低估的‘算法ADC’与‘流水线ADC’实战选型心得
算法ADC与流水线ADC实战选型指南:突破SAR ADC的思维定式 在嵌入式系统与传感器信号链设计中,模数转换器(ADC)的选择往往直接决定整个系统的性能天花板。当工程师们面对"高精度低速"、"中速中精度"和"高速高动态范围"等不同…...
AI绘画的三重危机:颜料、像素与剽窃
1. 这不是技术讨论,而是一场正在发生的行业地震“Paint, Pixels, and Plagiarism”——光看这个标题,你就能闻到火药味。它没说“AI绘画工具使用指南”,也没写“Stable Diffusion参数调优手册”,而是把颜料(Paint&…...
AI赋能“一人公司”创业热潮:机遇背后潜藏哪些风险?
“一人公司”创业范式席卷全国从苏州到深圳,从成都到上海,一种名为OPC(One Person Company,一人公司)的创业范式正以前所未有的速度席卷全国。全国已涌现出超过700个OPC社区,其中,WeOPC平台聚集…...
3个核心优势:MultiHighlight如何成为你的智能代码分析工具?
3个核心优势:MultiHighlight如何成为你的智能代码分析工具? 【免费下载链接】MultiHighlight Jetbrains IDE plugin: highlight identifiers with custom colors 🎨💡 项目地址: https://gitcode.com/gh_mirrors/mu/MultiHighli…...
Chrome插件开发实战指南:从入门到发布的完整开发教程
随着浏览器生态不断发展,Chrome插件(Chrome Extension)已经成为提高工作效率、实现自动化操作、数据采集以及浏览器功能增强的重要工具。无论是广告拦截、网页翻译、SEO分析,还是自动化办公,背后几乎都离不开Chrome插件技术。 尤其是在AI时代,Chrome插件已经不仅仅是“浏…...
IT运维、远程协助必看!ToDesk录屏功能实测:被控方也能“回放”操作全程
Hello大家,不知道各位有没有注意到,在ToDesk远程控制上新的V4.8.8.9版本中,无论是在基本设置还是在远控连接过程中的悬浮球功能栏里都能看见【录屏设置/开始录屏】这一项!那么,这究竟是何意味呐?又有哪些人…...
AI圈今日大事(2026-05-21)
AI圈今日大事(2026-05-21)1. 阿里云峰会:真武M890芯片 Qwen3.7-Max 双料齐发今日阿里云峰会上,阿里平头哥正式发布新一代训推一体AI芯片 真武M890:性能:相比前代真武810E提升3倍,内置144GB显存…...
AI Agent 编排框架比较:LangChain vs LlamaIndex vs Agent Info
AI Agent 编排框架比较:LangChain vs LlamaIndex vs Agent Info 前言 随着 AI Agent 的流行,出现了多个优秀的编排框架。选择合适的框架对于构建高效的 Agent 系统至关重要。 我在项目中使用过多个 Agent 框架,对它们的特点和适用场景有深入理…...
创业团队如何利用Taotoken的Token Plan有效控制AI应用开发成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 创业团队如何利用Taotoken的Token Plan有效控制AI应用开发成本 对于资源有限的创业团队和独立开发者而言,在项目初期将…...
拆解Autosar NM报文:从0x600到0x6FF,手把手教你读懂CAN网络里的‘心跳包’
Autosar网络管理报文深度解析:从0x600到0x6FF的实战指南 当你第一次打开主机厂的网络管理规范文档,看到满屏的十六进制地址和比特位定义时,是否感到一头雾水?本文将化身你的"技术显微镜",带你逐字节拆解Auto…...
