MySQL一条查询语句是怎么执行的?MySQL 的架构是什么样子?

news2024/11/18 14:29:29

先谈谈MySQL的架构,这样自然就搞清楚一条语句是怎么执行的了
首先,MySQL分为客户端,服务端,存储引擎
客户端:
● Java程序啊,可视化连接工具 Navicat啊等等,就是客户端;
服务端,里面的组件比较多:
连接器:验证密码,管理权限,负责客户端与服务端之间的连接的,有一个连接池
● 查询缓存:MySQL 8.0 删除了。因为一旦涉及到缓存,我们就要考虑缓存失效的问题,如果数据表存在数据(表数据,表结构以及索引)的变更,那么这张表的查询缓存就要被清除。
分析器:词法分析,语法分析
优化器生成具体的执行计划(比如说,选择哪个索引啊…),但是不一定就是最优的,可能出错,选择的索引并不是效率最高的。出错的情况,就需要我们人为的去更正了,比如说索引选择错了,我们可以使用 force index 来强制选择正确的索引。走了索引,不是一定就快的。
执行器:调用存储引擎接口,执行优化器生成的具体的执行计划。
存储引擎:
● 可插拔式的
innodb(常用的),支持事务,行锁
● myisam,不支持事务,会记录表的行数,最小粒度的锁是表锁
● memory,内存型的
在这里插入图片描述

一条更新语句是怎么执行的?
● 更新语句的执行过程和查询语句的执行过程,类似。
● 首先会写 undo log,记录老版本的数据,并更新记录的回滚指针和事务id,便于形成MVCC版本链和实现回滚等操作
● 更新之前,也是要先查询到数据,找的过程就区分两种:一种数据页刚好在内存,一种要去磁盘找
● 如果本行的数据页在 Buffer Pool 中,直接修改数据页。
● 如果不在内存中,就需要去磁盘中读取(如果是唯一索引字段,会有一些不同)
○ 如果是普通索引,会将更新操作记录在 change buffer 中,等下一次查询将数据页读取到 Buffer Pool 中,再进行 change buffer 里相关的更新操作,然后再刷回磁盘。这样一来,在写多读少的情况下,就减少了磁盘IO的次数
○ 如果是唯一索引,由于要判断唯一性,只能从磁盘中读取,相当于要去该唯一索引树上面查询一下,有没有这个字段值了,如果已经有了,则更新失败。
● 普通索引的话,是写到 change buffer 中,然后统一刷回磁盘。
● 不同于查询语句的是,还需要记录日志。因为MySQL是 Write Ahead Log,写之前,先写日志。
● 其实是修改Buffer Pool 中的数据页,也不是立刻刷回磁盘的,有很多的刷盘策略
在说的底层一点,其实是先到 Buffer Pool 里面查,看看要查的数据页是不是已经存在于 Buffer Pool中了,如果不存在再去磁盘IO

删除语句,插入语句。执行过程也类似

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

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

相关文章

Vivado 下 IP核 之ROM 读写

目录 Vivado 下 IP核 之ROM 读写 1、实验简介 2、ROM IP 核简介 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 3.2、单端口 ROM 的配置 3.3、双端口 ROM 的配置 3.4、ROM IP 核的调用 (1)ROM 顶层模块代码 (2)ROM IP 核仿…

lua-5.3.6源码安装

参考博客有https://blog.csdn.net/m0_53157173/article/details/124653430和http://blog.chinaunix.net/uid-14824714-id-3125340.html。 https://www.lua.org/download.html下载网址。点击当前网址中的“download”超链接可以下载以前的版本。 cat /etc/redhat-release看一下…

408考研计算机之计算机组成与设计——计算机层次系统概述2

目录 一、 冯诺依曼机基本思想 二、计算机的功能部件 1、输出输入设备 2、存储器 3、运算器 4、控制器​​​​​​​ 三、指令执行过程的描述 一、 冯诺依曼机基本思想 首先,第一个问题,冯诺依曼是谁?小编第一次知道这个名字&#xff…

Qt将十二位整形十进制转换成十六进制,在转为ascii字符,并下发串口。在接受端完整还原这个十二位的十进制数。

可以按照以下步骤进行操作: 将十进制数123456789012转换成十六进制字符串: QString hexString QString("%1").arg(123456789012ull, 0, 16);其中,%1表示替换第1个参数,0表示输出的最小位数为0,16表示输出…

Capturing Omni-Range Context for Omnidirectional Segmentation总结笔记

Capturing Omni-Range Context for Omnidirectional Segmentation(捕获全范围上下文进行全方位分割) 目录 一、论文出发点 二、论文核心思想 三、论文工作中主要问题 四、方法论 五、实验 六、结论 一、论文出发点 大多数用于分析城市环境的分割…

springboot+swagger项目中,controller引入@NotEmpty等校验注解的问题

springboot项目 springbootswagger项目中,controller层如果使用对基本数据类型使用 NotEmpty Length 等校验注解,controller会获取不到值,加了RequestBody后可以获取到了,但是前端传值content-type必须是text/plain。所以建议con…

考研数据结构--树和二叉树(2)

文章目录 二叉树的遍历前序遍历中序遍历后序遍历层次遍历 不用栈的二叉树中序遍历算法Morris代码分析 二叉树的构造概述如何完成二叉树的构造**回顾****思考**各种遍历序列提供的信息二叉树遍历性质性质1性质2 线索化二叉树引入定义构造 堆堆的定义堆的性质堆的建立堆的元素插入…

GPT1解读:Improving Language Understanding by Generative Pre-Training

自然语言处理NLP是当代人工智能的关键领域,包含文本识别、智能问答等多个方向任务,通过监督学习方式一般需要大量带标签数据,而对某些特定任务,获取带标签数据成本非常高。GPT通过大量的未标记文本数据来学习一个通用预训练&#…

ZiKiT DICOM 存档(PACS)模态服务器 Crack

ZiKiT结合了DICOM存档(PACS),模态工作列表服务器和HL7消息代理,它们共享相同的数据库并相互通信。 最新版本 – ZiKiT 2020 ZiKiT 提供动态映射规则和消息结构定义,同时保持合规性并遵守标准。该套件使非程序员能够在…

电动力学:电偶极辐射场

电磁辐射的产生条件 存在时变源(时变的电荷源、时变的电流源,或时变的电磁场)时变源的频率应足够高(辐射系统的尺寸大小和电磁波波长差不多时,才有可能产生明显的辐射效应)波源电路必须开放(源电…

Android 如何获取有效的DeviceId

目录 前言官方唯一标识符建议使用广告 ID使用实例 ID 和 GUID不要使用 MAC 地址标识符特性常见用例和适用的标识符 解决方案DeviceIdANDROID_IDMac地址UUID补充 总结 前言 从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可…

新手建站:腾讯云轻量服务器安装宝塔镜像和使用方法

腾讯云轻量应用服务器宝塔面板怎么用?轻量应用服务器如何安装宝塔面板?在镜像中选择宝塔Linux面板腾讯云专享版,在轻量服务器防火墙中开启8888端口号,然后远程连接到轻量服务器执行宝塔面板账号密码查询命令,最后登录和…

Java内存模型介绍

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念&…

系列四、vue3 初始化项目(图形化界面方式)

一、启动UI界面 vue ui 二、创建项目 2.1、在此创建项目 2.2、创建新项目-详情配置 2.3、创建新项目-预设 2.4、创建新项目-功能 2.5、创建新项目-配置 2.6、运行项目 任务》serve》运行》启动app 2.7、首页 三、安装element-plus 3.1、步骤 ①、运行 vue ui 命令&#…

【C++初阶】想要编译器为你干活吗?来试试模板吧(模板初阶)

一.泛型编程 引入 我们之前都写过交换函数Swap,例如这样的: //交换两个整型 void Swap(int*x1, int *x2) {int tmp *x1;*x1 *x2;*x2 tmp;} 如果要交换其它的类型该怎么办呢? 那只能当个CV工程师了,然后再修修改改,…

java枚举enum

目录 一、概念二、声明枚举三、枚举类四、为枚举添加方法五、EnumMap 与 EnumSet 一、概念 枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能…

CAN总线通讯协议学习

s目录 CAN(controller Area Network) 控制器局域网 CAN通讯 CAN总线的数据帧 解析 CAN(controller Area Network) 控制器局域网 CAN总线应用最多的是汽车领域,这里的控制器在汽车领域的专业术语是ECU.(electronic control unit)电子控制单元。可以看成…

【计算机网络之HTTP篇】HTTP协议详解

目录 一、HTTP协议概念 二、HTTP 协议格式 三、HTTP请求详解 认识URL 认识HTTP方法 GET POST Host Content-Length Content-Type User-Agent (简称 UA) Referer Cookie 四、HTTP 响应详解 状态码 200 OK 404 Not Found 403 Forbidden 500 Internal Server E…

IMX6ULL裸机篇之DDR3初始化

一. DDR3L初始化简介 I.MX6U-ALPHA 开发板上带有一个 256MB/512MB 的 DDR3 内存芯片,16 位宽,型号为 NT5CC128M16JR/MT5CC256M16EP,nanya 公司出品的,分为对应 256MB 和 512MB 容量。 我自己用的开发板上 DDR3L内存芯片型号为…

【论文阅读】REPLUG: Retrieval-Augmented Black-Box Language Models

文章目录 前言REPLUGREPLUG LSR: Training the Dense RetrieverComputing Retrieval LikelihoodComputing LM likelihood 前言 原文地址:REPLUG: Retrieval-Augmented Black-Box Language Models 本文提出REPLUG,一个将语言模型视为黑盒检索增强的语言模…