【Mysql】执行sql语句后,mysql都做了什么?

news2025/2/24 9:38:49

查数据大家都经常干,但是你知道从执行sql到看到结果,mysql背后都做了什么事情吗?

一、mysql的架构

client/server 这种客户端到服务端的架构,大家一定都很熟悉,其实 mysql 也与之类似。

  • 可以有多个客户端与服务端连接。
  • 客户端可以向服务端发送增删查改的请求。
  • 服务端根据请求,对存储的数据进行相应处理。

在真实环境中,数据库服务器进程和客户端进程可能运行在不同主机中,于是 mysql 采用 TCP 作为客户端和服务器之间的网络通信协议。

mysql 服务器在启动时会默认申请 3306 端口,然后网络上的其他进程就可以通过 ip地址 + 端口号 的方式与这个进程建立连接。

二、mysql 如何处理请求

连接成功后,就可以进行交互操作了,这时候发送查询sql,然后服务器返回结果。流程如图:

1. 连接管理

每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程专门处理与这个客户端的交互。

客户端退出时会与服务器断开连接,但是服务器并不会立即把与这个客户端交互的线程销毁,而是缓存起来

如果这时候有新的客户端再进行连接,就把这个缓存的线程分配给该客户端,为了不用频繁地创建和销毁线程,节省开销

当建立连接后,客户端发送请求。对于服务器来说,接受到的请求只是一个文本消息,这个文本消息还需要进一步处理。

2. 解析优化

服务器收到的是文本形式的请求,接下来还要经过几个处理。

--查询缓存

mysql服务器程序会把刚处理过的查询请求和结果缓存起来,如果下次有同样请求,直接从缓存中查找结果。

这个缓存是可以在不同的客户端之间共享,比如客户端A发送了一个查询请求,客户端B也发了个一样的,那么就直接查询缓存中的数据。

要注意的是,虽然查询缓存有时候可以提升系统性能,但是也同样带来缓存相关的维护。所以从MySQL 5.7.20开始,就不推荐使用查询缓存了,而在 MySQL 8.0中直接将其删除了

--语法解析

如果缓存没有命中,那么就要正式的查询,所以要解析客户端发过来的文本。

  • 判断请求的语法是否正确。
  • 从文本中提取出要查询的表、查询条件放到 mysql 内部使用的一些数据结构上。

--查询优化

解析完成后服务器程序就可以获取到关键信息了,比如查询条件、表。

但是,由于我们写的sql语句执行起来效率可能不是很高,于是mysql就会对其进行一些优化。比如外连接转为内连接、简化表达式等等。

3. 存储引擎

优化好后就可以真正的去执行了,谁去执行?就是这个存储引擎,mysql 服务器把数据的存储和提取都封装到了存储引擎的模块中

“引擎”这个名字听起来很高大上对吧?但实际上之前一直被叫做“表处理器”,功能就是接收上层传下来的指令,然后对表中的数据进行读取或写入操作

而关于引擎,网上一搜可以搜出很多种,但是不要担心,我们最常用的就是InnoDBMyISAM,其中 InnoDB 是 mysql 默认存储引擎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当前经济环境下,企业如何落地「降本增效」?

当前经济环境下,竞争形势激烈,IT企业面临着不少的挑战,比如说实施项目利润低、用人成本高、盈利能力难预测、项目前期投入大等,导致企业整体盈利能力下降。 不少IT老板都逐渐意识到「降本增效」的重要性,那么如何真正…

如何提高倾斜摄影三维模型数据裁剪速度?

如何提高倾斜摄影三维模型数据裁剪速度? 倾斜摄影三维模型数据裁剪是一个重要的数据处理步骤,用于去除不必要的部分并保留需要的数据。在实际应用中,倾斜摄影三维模型数据量通常很大,因此如何提高倾斜摄影三维模型数据裁剪速度成…

南洋才女,德艺双馨,孙燕姿本尊回应AI孙燕姿(基于Sadtalker/Python3.10)

孙燕姿果然不愧是孙燕姿,不愧为南洋理工大学的高材生,近日她在个人官方媒体博客上写了一篇英文版的长文,正式回应现在满城风雨的“AI孙燕姿”现象,流行天后展示了超人一等的智识水平,行文优美,绵恒隽永&…

服了呀,00后实在是太卷了.....

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,工作都没两年,跳槽到我们公司起薪20K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了…

2023北京高考作文,AI助手来应考,能满分?

微写作(10分) 从下面三个题目中任选一题,按要求作答。不超过150字。不透露所在区、学校及个人信息。 (1)近年来,微信公众号成为信息传播的一种重要媒介。班级准备创建自己的公众号,但对是否需…

只需8个步骤,即可在线创建优秀的帮助中心

创建一个优秀的帮助中心可以帮助企业更好地向用户传递信息,提高用户满意度和忠诚度。在今天的数字化时代,许多企业都已经开始意识到了帮助中心的重要性。 8个步骤,帮助您在线创建一个优秀的帮助中心 步骤1:明确目标和用户需求 …

2.4 利用MyBatis实现条件查询

一、打开MyBatisDemo项目 二、对学生表实现条件查询 1、创建学生映射器配置文件 在resources/mapper目录里创建学生映射器配置文件 - StudentMapper.xml <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org…

2023年十大最佳自动化测试工具(建议收藏)

Best Automation Testing Tools for 2023 对更快交付高质量软件&#xff08;或"快速质量"&#xff09;的需求要求组织以敏捷&#xff0c;持续集成&#xff08;CI&#xff09;和DevOps方法论来寻找解决方案。测试自动化是这些方面的重要组成部分。最新的《 2018-2019…

2023接口自动化测试,完整入门篇(超详细~)

一、自动化测试 众所周知&#xff0c;自动化测试已经成为软件项目中不可或缺的测试方法。基于用户交互界面&#xff08;GUI&#xff09;的自动化测试方法具有模拟用户行为和过程可视化的特点&#xff0c;因此受到了广大入门自动化人士的喜爱。诸如&#xff1a;QTP、Selenium等…

问题记录:K8s中安装calico,calico反复重启,原因:版本未匹配

问题描述 K8s版本1.23.6 calico-node-反复重启&#xff0c;READY状态一直为0&#xff0c;STATUS为CrashLoopBackOff&#xff0c; 查看节点日志 #calico-node-xxx 对应pod名称 kubectl logs calico-node-xxxx -n kube-system 没有错误&#xff0c;只有info信息 但是一直反…

代码随想录算法训练营15期 Day 14 | 理论基础、递归遍历、迭代遍历、统一迭代

理论基础 二叉树的种类 需要了解 二叉树的种类&#xff0c;存储方式&#xff0c;遍历方式 以及二叉树的定义 满二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 完全二叉树…

十年寒冰,IT老鸟告诉你如何快速入门一个编程语言 #如何系统学习一门it技术#

我个人算是学了非常多的各类编程语言了&#xff0c;从最早的.NET到后面的PHP、数据库MySQL、Redis、前端&#xff08;HTML、CSS、JS&#xff09;、公众号开发、再到后面因为工作的需要&#xff0c;学习前端工程化、NodeJs、Vue、React、以及个人学习爬虫的时候把Python也学了&a…

复合材料压缩模拟探究:选取应变分量的区别,与实验结果的对比分析

复合材料压缩模拟探究&#xff1a;选取应变分量的区别&#xff0c;与实验结果的对比分析 一、模型介绍 6641的试验件模拟。加强片是采用continuum shell&#xff0c;试验件采用每层一个单元&#xff0c;并且采用一层一个材料&#xff0c;并定义方向。 试验件材料为X850材料&a…

做接口测试必须要弄明白的7个问题

1. 为什么要进行接口测试 接口测试是软件测试中必不可少的环节之一。在软件开发过程中&#xff0c;不同的模块之间需要通过接口进行交互&#xff0c;因此对接口进行测试可以有效地检测模块间的交互是否正常&#xff0c;从而保证整个系统的质量和稳定性。 2. 接口测试的作用 接…

跨境必看!FP独立站必备安全支付方式

收款对于做F牌独立站的卖家来说至关重要&#xff0c;收款的方式有很多种&#xff0c;卖家在选择收款方式时需要关注什么&#xff1f;FP独立站必备的支付收款方式又有哪些&#xff1f;卖家又该如何选择呢&#xff1f; 一、在选择支付方式时要注意什么&#xff1f;1.安全合规&…

RPC、HTTP、DSF、Dubbo,每个都眼熟,就是不知道有什么联系?

一、HTTP 和 RPC 首先&#xff0c;http 与 rpc 有什么区别这个问题不太严谨&#xff0c;因为这俩就不是一个层级的东西。 HTTP 这个大家太熟悉了吧&#xff1f;日常接触最多的恐怕就是各种http协议的接口了。 没错&#xff0c;http它是一个协议。 其他在这里就不打算铺开了…

Nginx+Tomcat实现负载均衡、动静分离

目录 一、Nginx负载均衡实现原理 1.Nginx 实现负载均衡是通过反向代理实现 2、Nginx配置反向代理主要参数 3、动静分离原理 4、Nginx静态处理优势 5、并发量和吞吐量计算 二&#xff1a;7层反向代理 1、环境准备 ​2、配置Nginx Server 3、tomcat1 和tomcat2配置 4、 搭…

Jmeter性能测试 (入门)

Jmeter是一款优秀的开源测试工具&#xff0c; 是每个资深测试工程师&#xff0c;必须掌握的测试工具&#xff0c;熟练使用Jmeter能大大提高工作效率。 熟练使用Jmeter后&#xff0c; 能用Jmeter搞定的事情&#xff0c;你就不会使用LoadRunner了。 本文将通过一个实际的测试例…

浪涌保护器的选型和原理(SPD)

SPD是Surge Protective Device的简写&#xff0c;中文名称有&#xff1a;电涌保护器、浪涌保护器、防雷栅、雷电浪涌防护器、防雷器等。 SPD浪涌保护器其内部包含至少一个非线性元件。当电涌出现时&#xff0c;SPD能在极短的时间导通&#xff0c;将电流泄放到地&#xff0c;其…

如何有效的提升餐饮油烟的监控力度

摘要&#xff1a;现阶段餐饮行业发展十分迅速&#xff0c;为了更好地提升餐饮油烟的监控力度&#xff0c;强化餐饮业油烟在线监控系统的设计成为重中之重。油烟在线监控系统的强化可以降低油烟的排放量&#xff0c;同时在排烟的过程中&#xff0c;还可搜集到更多的数据和信息。…