01 | 基础架构:一条SQL查询语句是如何执行的?

此系列文章为极客时间课程《MySQL 实战 45 讲》的学习笔记!

引言

在了解 SQL 查询语句如何执行之前,先了解下MySQL 的基本架构示意图。
MySQL 的逻辑架构图
MySQL 分为 Server 层和引擎层。

  • Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数。
  • 存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。MySQL5.5.5 版本默认是 InnoDB 引擎。

1.连接器

连接器负责客户端和服务端的连接建立、获取权限、维护和管理连接。
连接建立之后,若没有后续动作,则此连接出于空闲状态,通过show processlist命令查看,Command列为 Sleep 的表示当前连接空闲。
在这里插入图片描述
空闲连接超时时间由参数wait_timeout控制,默认是 8 小时

2.查询缓存

MySQL 服务器收到一个查询请求后,会先去缓存查询是否存在,缓存通过 Key-Value 的形式存储,key 为查询的 sql 语句,value 为查询结果。
但是缓存的设计非常鸡肋,因为查询缓存的失效非常频繁,只要有表的数据更新,那么这张表的查询缓存就会失效。
所以建议查询缓存按需使用,可以通过设置参数query_cache_type=DEMAND关闭缓存,当某个 sql 需要使用缓存时,可以显示的指定

mysql> select SQL_CACHE * from T where ID=10

MySQL8中直接删除了缓存功能。

3.分析器(WHAT)

分析器主要做词法分析和语法分析。

  • 词法分析:分析 sql 中的字符串分别代表什么,比如通过 select 可知这是一个查询语句。
  • 语法分析:根据 MySQL 语法规则,判断 sql 是否符合语法。

4.优化器(HOW)

分析器分析 sql 语句是要做什么。优化器是分析 sql 如何做。
比如 sql 的执行有多种方案,优化器需要选择一种最优效率的执行方案,

5.执行器(DO)

接下来就进入的正式执行阶段。

  • 首先判断当前用户是否有表的执行权限。
  • 调用执行引擎的接口,查询数据,没查询一条判断是否满足条件,一直到表中最后一条数据。
  • 然后执行器将满足条件的数据返回给客户端。

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

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

相关文章

uniapp自动升级

一、创建云服务空间(https://unicloud.dcloud.net.cn) 云空间用于关联需要版本控制升级的项目,如果已拥有云空间则省略此步骤。 二、搭建 uni升级中心 - 后台管理系统(升级中心 uni-upgrade-center - Admin) uni-adm…

Apache部署与配置

概述 介绍 Apache HTTP Server(简称Apache)是Apache的一个开源的网页服务器,它源自NCSAhttpd服务器,并经过多次修改和发展,如今已经成为全球范围内广泛使用的Web服务器软件之一 特点 跨平台:可以运行在几乎所有广泛使用的计算机平…

Apache中使用SSI设置

先停服务在修改httpd.conf,备份下 Apache\Apache24\conf 设置httpd.conf LoadModule ssl_module modules/mod_ssl.so 取消该命令前的注释符# AddType text/html .shtml AddOutputFilter INCLUDES .shtml 取消该命令前的注释符# 加入html AddType text/html .…

前端javascript中的排序算法之插入排序

插入排序(Selection Sort)基本思想: 插入排序每次排一个数组项,以此方式构建最后的排序数组。假定第一项已经排序了,接着, 它和第二项进行比较,第二项是应该待在原位还是插到第一项之前呢&#…

软件工具网站推荐

1.菜鸟工具 菜鸟工具 - 不止于工具菜鸟工具,为开发设计人员提供在线工具,网址导航,提供在线PHP、Python、 CSS、JS 调试,中文简繁体转换,进制转换等工具。致力于打造国内专业WEB开发工具,集成开发环境&…

详细谈谈负载均衡的startupProbe探针、livenessProbe探针、readnessProbe探针如何使用以及使用差异化

文章目录 startupProbe探针startupProbe说明示例配置参数解释 使用场景说明实例——要求: 容器在8秒内完成启动,否则杀死对应容器工作流程说明timeoutSeconds: 和 periodSeconds: 参数顺序说明 livenessProbe探针livenessProbe说明示例配置参数解释 使用…

CSS技巧专栏:一日一例 1.纯CSS实现 会讨好的热情按钮 特效

题外话: 从今天开始,我准备开设一个新的专栏,专门写 使用CSS实现各种酷炫按钮的方法,本专栏目前准备写40篇左右,大概会完成如下按钮效果: 今天,我来介绍第一个按钮的实现方法:会讨好的热情按钮。为什么我给它起这样的名字呢?你看它像不像一个不停摇尾巴的小黄?当你鼠…

【QML之·基础语法概述】

系列文章目录 文章目录 前言一、QML基础语法二、属性三、脚本四、核心元素类型4.1 元素可以分为视觉元素和非视觉元素。4.2 Item4.2.1 几何属性(Geometry):4.2.2 布局处理:4.2.3 键处理:4.2.4 变换4.2.5 视觉4.2.6 状态定义 4.3 Rectangle4.3.1 颜色 4.4…

【界面态】霍尔效应表征氮化对SiC/SiO2界面陷阱的影响

引言 引言主要介绍了硅碳化物(SiC)金属-氧化物-半导体场效应晶体管(MOSFETs)作为新一代高压、低损耗功率器件的商业化背景。SiC MOSFETs因其优越的电气特性,在高电压和高温应用领域具有巨大的潜力。然而,尽…

综合安全防护

题目 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许访问互联网 3,办公区设备10.0.2.10不允许访问DMz区的FTP服务器和HTTP服务器,仅能ping通10.0.3.10 4,办公区分为市场部和研发部,研…

动态数据库设计

动态数据库设计是一种灵活的方法,用于构建能够适应不断变化的数据需求的数据库结构。它强调在不频繁修改数据库表结构的前提下,有效管理和存储多样化的数据。以下是实现动态数据库设计的一些关键技术点和策略: 实体-属性-值(EAV&a…

如何在JetBrains中写Codeforce?

目录 前言 正文 leetcode 个人喜好 参考资料 具体操作步骤 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in University of Nottingham Ningbo China&#x1f4…

Python函数 之 模块和包

1.模块 1, 在Python 中, 每个以 .py 结尾的 Python 代码⽂件 都可以称为是⼀个模块。 2, 在模块中 别⼈书写好的功能(变量, 函数, 类),我们可以拿来直接使⽤。 3, 我们自己写的代码文件, 想要作为模块让别⼈使⽤, 你的代码⽂件名(模块名) 满足标识符的规…

物流工业三防平板实时跟踪货物位置和状态

在当今全球化和高度数字化的商业环境中,物流行业的高效运作对于企业的成功和经济的繁荣至关重要。货物的准确、实时跟踪不仅能提高物流效率,还能增强客户满意度,降低运营成本。物流工业三防平板的出现,为实现货物位置和状态的实时…

全网最适合入门的面向对象编程教程:12 类和对象的 Python 实现-Python 使用 logging 模块输出程序运行日志

全网最适合入门的面向对象编程教程:12 类和对象的 Python 实现-Python 使用 logging 模块输出程序运行日志 摘要: 本文主要介绍了日志的定义和作用,以及 Python 内置日志处理的 logging 模块,同时简单说明了日志等级和 logging …

【人工智能】-- 搜索技术(状态空间法)

个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏: 专业知识 文章目录 🍉引言 🍈介绍 🍉状态空间法 🍈状态空间的构成 🍍状态 🍍算符…

办公助手推荐✨

办公助手来啦!✨ 办公助手来啦!✨🌟 主要亮点📝 全新PDF编辑器🎨 丰富的幻灯片版式🌍 改进的从右至左显示🌐 新增本地化选项 📊 应用场景在线办公套件📱 多平台支持&…

idea创建dynamic web project

由于网课老师用的是eclipse,所以又得自己找教程了…… 解决方案: https://blog.csdn.net/Awt_FuDongLai/article/details/115523552

20240709每日后端--------最优解决Invalid bound statement (not found)

目标 最优解决Invalid bound statement (not found) 步骤 1、打包 2、查看target下是否成双成对出现 3、核对无误后,即可解决问题。

软考高级里《系统架构设计师》容易考吗?

我还是22年通过的架构考试。系统架构设计师属于软考高级科目,难度比初级和中级都要大,往年的通过率也比较低,一般在10-20%左右。从总体来说,这门科目确实是不好过的,大家如果想要备考系统架构设计师的话,还…