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

 查数据大家都经常干,但是你知道从执行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 默认存储引擎。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

突破编程_前端_JS编程实例(简单树结构组件)

1 开发目标 实现如下简单树结构组件: 再点击树节点后,会调用客户端传入的回调函数: 2 详细需求 简单树结构组件需根据客户端提供的参数创建,具备动态构建树形结构节点、选项卡切换及自定义内容显示等功能: &#xf…

DR模式LVS负载均衡部署

实验:7-1做调度器;7-2和7-3做真实服务器;7-4做客户端; 1.先关闭所有的防火墙和selinux [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# 2.怎么看selinux状态 [rootlocalhost…

docker拉取镜像报错permission denied

ocker pull apache/causeway-app-helloworld:latest permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImageapache%2Fcauseway-app-helloworld&a…

Vue:双token无感刷新

文章目录 初次授权与发放Token:Access Token的作用:Refresh Token的作用:无感刷新:安全机制:后端创建nest项目AppController 添加login、refresh、getinfo接口创建user.dto.tsAppController添加模拟数据 前端Hbuilder创…

node的使用和模块化认识

node使用 1. node运行文件 node执行js的方式是在cmd命令行运行运行方式两种 直接打开命令行输入node,进入node环境,书写javascript,这种方式书写javascript关闭命令行就需要在重新写一遍,一般开发不推荐使用这种方式。 退出node…

磁盘没有满 为什么提示磁盘空间不足?原来是inode惹的祸。

我为什么知道是inode 的问题呢? 接下备好瓜子花生来且听我分析 我一个免费开源根据ip获取用户地理位置的api 突然报错如下 failed to open stream: No space left on device in 然后登录linux 使用shell命令 自动补全功能竟然也提示磁盘空间不足 报错如下 cd /-b…

ES单节点部署

ES 拉取镜像 docker pull elasticsearch:7.10.1启动容器 docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e "ES_JAVA_OPTS-Xms1g -Xmx1g" -v /es_data:/usr/share/elasticsearch/data --name es 558380375f1a注&#xff1a…

微信小程序怎么盈利?探索微信小程序的盈利途径与建设流程

微信小程序自推出以来,凭借其无需下载安装、即用即走的特点,在移动互联网领域迅速占据了重要地位。商家和开发者们纷纷投入其中,希望借助这一平台实现商业价值的转化。那么,微信小程序是如何为开发者和商家带来盈利的呢&#xff1…

配置与管理防火墙

配置与管理防火墙 1,概念:设置在不同网络或网络安全域之间的一系列部件的组合。 2,功能:保护内网中易手攻击的服务;控制内外网之间网络系统的访问;隐藏内网的IP地址及结构的细节,提高网络保护…

【操作系统概念】 第5章:进程调度

文章目录 0.前言5.1 基本概念5.1.1 CPU-I/O 区间周期5.1.2 CPU程序调度5.1.3 抢占调度5.1.4 分派程序 5.2 调度准则5.3 调度算法5.3.1 先到先服务调度(First-Come,First-Served scheduling)5.3.2 最短作业优先调度(shortest-job-first scheduling,SJF)5.3.3 优先级调…

docker 安装 portainer

小编给友友们总结了一下 Portainer 的好处以下 Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swar…

掘根宝典之C语言原码,反码,补码,位操作运算符(~,,|,^,<<,>>,=,|=,^=,>>=,<<=)

目录 二进制数 什么是二进制数 c语言中的二进制数 机器数 原码 正数计算 负数计算 反码 负数计算 跨零计算 补码 定义 跨零计算 总结 按位逻辑运算符(~,&,&,|,|,^,^) 按…

玩家至上:竞技游戏设计如何满足现代玩家的需求?

文章目录 一、现代玩家需求分析二、以玩家体验为核心的游戏设计三、个性化与定制化服务四、强化社交互动与社区建设五、持续更新与优化《游戏力:竞技游戏设计实战教程》亮点编辑推荐内容简介目录获取方式 随着科技的飞速发展和游戏产业的不断壮大,现代玩…

java工程师面试技巧,最新Java开发面试解答

一、前言 聊的是八股的文,干的是搬砖的活! 面我的题开发都用不到,你为什么要问?可能这是大部分程序员求职时的经历,甚至也是大家讨厌和烦躁的点。明明给的是拧螺丝的钱、明明做的是写CRUD的事、明明担的是成工具的人…

基于词袋模型的场景识别(附源代码!!!)

目录 1. 任务要求2. 数据集3. 实现算法4. 实验结果5. 源代码 1. 任务要求 输入:给定测试集图片,预测在15个场景中的类别。任务: 实现Tiny images representation。实现最近邻分类器nearest neighbor classifier。实现SIFT特征词袋表示 输出&…

原生IP是什么?如何获取海外原生IP?

一、什么是原生IP 原生IP地址是互联网服务提供商(ISP)直接分配给用户的真实IP地址,无需代理或转发。这类IP的注册国家与IP所在服务器的注册地相符。这种IP地址直接与用户的设备或网络关联,不会被任何中间服务器或代理转发或隐藏。…

嵌入式学习-FreeRTOS-Day1

一、重点 1、VCC和GND VCC: 1、电路中为电源,供应电压 2、3.3v-5v 3、数字信号中用1表示GND: 1、表示地线 2、一般为0v 3、数字信号中用0表示2、电容和电阻 电容 存储电荷 存储能量: 电容器可以在其两个导体板(极…

java开发工程师面试技巧,小白必看

什么是分布式锁?在回答这个问题之前,我们先回答一下什么是锁。 普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个…

随机变量及其分布错题本

《1800》 1 需要从概率密度出发,在积分成为分布函数的情况下将 x 拉回为 -x来进行计算,所以X与-X最后得出的分布函数会一样。 2 3 4 5 6 7 8 9 10 11 12 13 14 15

二维码门楼牌管理系统应用场景:市场研究机构的新宠

文章目录 前言一、市场研究机构的新工具二、市场分析与区域趋势研究三、支持企业决策与市场营销策略四、与市场研究机构的联动效应五、未来展望 前言 在数字化时代,二维码门楼牌管理系统以其独特的优势,正在成为市场研究机构的新宠。通过收集和分析门牌…