MySQL整体架构
目录
1 客户端
2 服务端
2.1 Server层
2.1.1 连接器
2.1.2 查询缓存
2.1.3 词法器
2.1.4 优化器
2.1.5 执行器
2.2 存储引擎层

1 客户端
● 客户端为连接MySQL服务端的工具或者驱动,比如JDCB,ODBC等等
● 用于连接目前服务器,并且发送需要执行的SQL
2 服务端
2.1 Server层
● 负责处理SQL语句,解析优化,缓存等
● 提供权限管理,用户认证
● 提供了各种SQL函数和存储过程
● 提供了复制,备份,恢复等高级功能
● Server层有自己的日志系统,binlog日志
● binlog记录了所有的DML(INSERT,UPDATE,DELETE)语句
● binlog只要用于复制和恢复操作
2.1.1 连接器
● 负责接收客户端的连接
● 验证是否有权限登录
● 维护连接
● 默认异连接上的客户端空闲8小时后会被服务端主动断开

连接应该注意的问题
● 频繁创建和关闭连接可能会对性能产生负面影响,通常用连接池来管理数据库连接
● 使用长连接时,有可能会因为产时间运行导致MySQL服务端内存占用高未释放问题,可执行RESET CONNECTION命令重置mysql连接释放内存(本地使用MySQL8执行命令报错)
2.1.2 查询缓存
● MySQL5.7版本,查询时先查询缓存此语句是否执行过
● 之前执行的SQL语句会作为key,查询结果作为value存储在查询缓冲中
● 如果命中缓存,将直接返回查询结构
● 如果未命中,才真正执行查询逻辑
相关参数
● query_cache_size:用于缓存大小
● query_cache_type:设置使用缓存的场景
○ 0(OFF):不使用query cache
○ 1(ON):使用query cache
○ 2(DEMOND):查询时使用sql_cache参数才使用query cache
● MySQL8中去除了查询缓存机制
● 因为对于更新频发的表来说,缓存命中率会非常低
● 对于静态表,普遍上都会在业务层做缓存,不会使用到MySQL缓存数据
2.1.3 词法器
● 若查询缓存未命中,则会执行分析器来分析sql语句是否合法,主要进行词法分析和语法分析两个阶段
● 词法分析:
○ 主要负责从SQL语句中提取关键字,比如表名,字段名等等
○ 词法分析阶段从information_schema库中获取表结构信息
● 语法分析
○ 判断输入的语句是否满足MySQL语法
○ 如果语法错误,就会返回错误提示

● 在分析阶段也会对数据库的表级权限和数据库权限进行验证
2.1.4 优化器
● 经过了分析器,若语法正确,则会进入优化器
● 优化器的作用是查询重写,选择最佳执行路径,生成执行计划
● 查询重写:对原始的查询SQL进行重写,比如将子查询转换为join连接等
● 选择最佳执行路径:基于统计信息,选择使用哪个索引,确定表的连接顺序以及是否使用临时表,文件排序等策略
● 生成执行计划:基于以上分析,生成SQL执行计划,详细描述了如何从存储引擎获取数据,进行过滤,排序和聚合等操作
2.1.5 执行器
● MySQL通过分析器知道了你要做什么
● 通过优化器知道了该怎么做
● 通过执行器开始执行语句
打开表的时候,执行器就会根据标的引擎定义,去使用这个引擎提供的接口
● 调用引擎接口取这个表的第一行,判断是否满足条件,如果不是则跳过,如果是则将这行存在结果集中
● 调用引擎接口获取下一行,重复相同的判断逻辑,知道取到这个表的最后一行
● 执行器将上述遍历过程中所以后满足条件的行组成记录集作为结果返回给客户端
2.2 存储引擎层
● 负责数据的存储和检索
● MySQL支持多种存储引擎,比如InnoDB,MyISAM,Memory等等
● InnoDB是MySQL默认的存储引擎,支持事务,行级锁以及外键约束
● InnoDB有自己的日志系统,redo log(重做日志)和undo log(撤销日志)
● redo log用于保证事务的持久性
● undo log用于支持事务的原子性和多版本并发控制(MVCC)
相关文章:
MySQL整体架构
目录 1 客户端 2 服务端 2.1 Server层 2.1.1 连接器 2.1.2 查询缓存 2.1.3 词法器 2.1.4 优化器 2.1.5 执行器 2.2 存储引擎层 1 客户端 ● 客户端为连接MySQL服务端的工具或者驱动,比如JDCB,ODBC等等 ● 用于连接目前服务器,并且发送需要执行…...
Linux之yum详解
—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中,软件管理方式通常有三种方式: rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…...
大数据学习(52)-MySQL数据库基本操作
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
鸿蒙启动页开发
鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件,找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…...
记忆化搜索(典型算法思想)—— OJ例题算法解析思路
目录 一、509. 斐波那契数 - 力扣(LeetCode) 算法代码: 1. 动态规划 (fib 函数) 初始化: 递推计算: 返回结果: 2. 记忆化搜索 (dfs 函数) 备忘录初始化: 递归终止条件: 递…...
Day11,Hot100(贪心算法)
贪心 (1)121. 买卖股票的最佳时机 第 i 天卖出的最大利润,即在前面最低价的时候买入 class Solution:def maxProfit(self, prices: List[int]) -> int:min_price prices[0]ans 0for price in prices:ans max(ans, price - min_price…...
翻译: 深入分析LLMs like ChatGPT 一
大家好,我想做这个视频已经有一段时间了。这是一个全面但面向普通观众的介绍,介绍像ChatGPT这样的大型语言模型。我希望通过这个视频让大家对这种工具的工作原理有一些概念性的理解。 首先,我们来谈谈你在这个文本框里输入内容并点击回车后背…...
《白帽子讲 Web 安全》之移动 Web 安全
目录 摘要 一、WebView 简介 二、WebView 对外暴露 WebView 对外暴露的接口风险 三、通用型 XSS - Universal XSS 介绍 四、WebView 跨域访问 五、与本地代码交互 js 5.1接口暴露风险: 5.2漏洞利用: 5.3JavaScript 与 Native 代码通信 六、Chr…...
解锁 indexOf、substring 和 JSON.stringify:从小程序图片上传看字符串魔法 ✨
🌟 解锁 indexOf、substring 和 JSON.stringify:从小程序图片上传看字符串魔法 ✨ 在 JavaScript 中,字符串操作和数据序列化是开发中不可或缺的技能。indexOf、substring 和 JSON.stringify 是三个简单却强大的工具,分别用于定位…...
常用的AI文本大语言模型汇总
AI文本【大语言模型】 1、文心一言https://yiyan.baidu.com/ 2、海螺问问https://hailuoai.com/ 3、通义千问https://tongyi.aliyun.com/qianwen/ 4、KimiChat https://kimi.moonshot.cn/ 5、ChatGPThttps://chatgpt.com/ 6、魔塔GPT https://www.modelscope.cn/studios/iic…...
DCN讲解
DCN是DeepFM的升级版,后者是只能做二阶交叉特征,随着阶数上升,模型复杂度大幅提高,且FM网络层较浅,表达能力有限。google团队通过构建深度交叉网络来自动进行特征的高阶交叉,且时空复杂度均为线性增长&…...
前端开发常用的加密算法
以下是前端开发中常用的加密方式及其适用场景的详细说明: 一、核心加密方案 加密类型常用算法特点适用场景对称加密AES、DES、3DES加密解密使用相同密钥,速度快本地存储加密、HTTP Body加密非对称加密RSA、ECC公钥加密私钥解密,安全性高传输…...
5. Nginx 负载均衡配置案例(附有详细截图说明++)
5. Nginx 负载均衡配置案例(附有详细截图说明) 文章目录 5. Nginx 负载均衡配置案例(附有详细截图说明)1. Nginx 负载均衡 配置实例3. 注意事项和避免的坑4. 文档: Nginx 的 upstream 配置技巧5. 最后: 1. Nginx 负载均衡 配置实例 需求说明/图解 windows 浏览器输…...
C++之再识模板template
目录 1.非类型模板参数 2.函数/类模板的特化 3.模板的分离编译 4.总结:模板的优缺点 1. 代码复用性高 2. 类型安全 3. 性能优化 2. 错误信息难以理解 3. 代码膨胀 易错易忽略的语法点: 1. 模板声明和定义分离问题 2. 模板参数推导问题 1.非类…...
【文献阅读】Collective Decision for Open Set Recognition
基本信息 文献名称:Collective Decision for Open Set Recognition 出版期刊:IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING 发表日期:04 March 2020 作者:Chuanxing Geng and Songcan Chen 摘要 在开集识别࿰…...
力扣刷题DAY2(链表/简单)
一、回文链表 回文链表 方法一:双指针 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, L…...
golang 内存对齐和填充规则
内存对齐和填充规则 对齐要求:每个数据类型的起始地址必须是其大小的倍数。 int8(1字节):不需要对齐。int16(2字节):起始地址必须是2的倍数。int32(4字节):起…...
ansible自动化运维工具学习笔记
目录 ansible环境部署 控制端准备 被控制端准备 ansible批量管理主机的方式主要有两种 配置准备: ssh密码认证方式管理机器 密码登录,需要各主机密码相同 配置免密登录 ssh密钥方式批量管理主机 ansible实现批量化主机管理的模式 ansible-doc命令 comman…...
零基础deep seek+剪映,如何制作高品质的视频短片
以下是专为零基础学习者设计的 剪映专业版详细教程+Deep seek配合制 ,包含从入门到精通的系统化教学,配合具体操作步骤与实用技巧: 基于DeepSeek与剪映协同制作高品质视频短片的专业流程指南(2025年最新实践版&#x…...
网络空间安全(4)web应用程序安全要点
前言 Web应用程序安全是确保Web应用程序、服务和服务器免受网络攻击和威胁的关键环节。 一、编写安全的代码 输入验证与过滤:确保所有的用户输入都被正确验证和过滤,以防止注入攻击等安全漏洞。开发者应对URL、查询关键字、HTTP头、POST数据等进行严格的…...
【word】保存重开题注/交叉引用消失,全局更新域问题
目录 一、更新域是什么二、更新域常见问题及解决方法(一)更新域后内容未变化(二)域代码显示异常(三)交叉引用无法更新(四)全选更新域出现错误 三、交叉引用与题注的关系及操作&#…...
大语言模型中的 Token:它们是什么,如何工作?
引言 如果你使用过 ChatGPT 这样的 AI 工具,你可能会好奇:它是如何理解并生成文字的?大语言模型(LLM,Large Language Model)并不是直接处理整个句子或文章,而是拆分成一个个 Token(…...
DeepSeek的无限可能
DeepSeek的无限可能 DeepSeek简介DeepSeek定义DeepSeek的发展历程DeepSeek的核心功能 如何使用DeepSeek注册与安装模型使用原则提示语的使用 人机共生 DeepSeek简介 DeepSeek定义 DeepSeek(中文名:深度求索)是一款由杭州深度求索人工智能基…...
【wordpress】服务器已有LNMP环境(已运行WordPress),如何配置文档访问功能?
效果如图步骤确定文件存放目录404.html修改配置文件重启nginx服务 接下来是从win向linux云服务器上传文件使用Samba服务(没成功)使用xshell上传文件(大文件上传一堆乱码)winscp(好用) 效果如图 如果url不对…...
Ollama 的庐山真面目
Ollama 运行方式分析 本地推理条件(GPU/CPU/RAM):Ollama 支持在本地电脑进行大模型推理,但需要满足一定的硬件条件。一般来说,GPU 有助于加速推理,特别是显存较大的 GPU 能够加载更大的模型;如果…...
行为型模式 - 观察者模式 (Publish/Subscribe)
行为型模式 - 观察者模式 (Publish/Subscribe) 又称作为订阅发布模式(Publish-Subscribe Pattern)是一种消息传递模式,在该模式中,发送者(发布者)不会直接将消息发送给特定的接收者(订阅者&…...
C++编程指南21 - 线程detach后其注意变量的生命周期
一:概述 如果一个线程被 detach() 了,那么它的生命周期将独立于创建它的作用域。因此,该线程只能安全地访问: 全局变量(global/static objects)堆上分配的对象(free-store allocated objects&a…...
Hadoop之01:HDFS分布式文件系统
HDFS分布式文件系统 1.目标 理解分布式思想学会使用HDFS的常用命令掌握如何使用java api操作HDFS能独立描述HDFS三大组件namenode、secondarynamenode、datanode的作用理解并独立描述HDFS读写流程HDFS如何解决大量小文件存储问题 2. HDFS 2.1 HDFS是什么 HDFS是Hadoop中的一…...
Redis学习笔记系列(一)——Redis简介及安装
1. Redis介绍 Redis是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行…...
【考试大纲】初级信息处理技术员考试大纲
目录 引言一、考试说明1.考试要求2.考试目标二、考试范围科目一:信息处理基础知识科目二:信息处理应用技术引言 最新的信息处理技术员考试大纲出版于 2018 年 6 月,本考试大纲基于此版本整理。 一、考试说明 1.考试要求 (1)了解信息技术的基本概念; (2)熟悉计…...
