MySQL整体架构

news2025/4/8 5:29:59

目录

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

○ 1ON)使用query cache

○ 2DEMOND):查询时使用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)

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

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

相关文章

Linux之yum详解

—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中,软件管理方式通常有三种方式: rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…

鸿蒙启动页开发

鸿蒙启动页开发 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团队通过构建深度交叉网络来自动进行特征的高阶交叉,且时空复杂度均为线性增长&…

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 摘要 在开集识别&#xff0…

力扣刷题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…

ansible自动化运维工具学习笔记

目录 ansible环境部署 控制端准备 被控制端准备 ansible批量管理主机的方式主要有两种 配置准备: ssh密码认证方式管理机器 密码登录,需要各主机密码相同 配置免密登录 ssh密钥方式批量管理主机 ansible实现批量化主机管理的模式 ansible-doc命令 comman…

网络空间安全(4)web应用程序安全要点

前言 Web应用程序安全是确保Web应用程序、服务和服务器免受网络攻击和威胁的关键环节。 一、编写安全的代码 输入验证与过滤:确保所有的用户输入都被正确验证和过滤,以防止注入攻击等安全漏洞。开发者应对URL、查询关键字、HTTP头、POST数据等进行严格的…

【word】保存重开题注/交叉引用消失,全局更新域问题

目录 一、更新域是什么二、更新域常见问题及解决方法(一)更新域后内容未变化(二)域代码显示异常(三)交叉引用无法更新(四)全选更新域出现错误 三、交叉引用与题注的关系及操作&#…

DeepSeek的无限可能

DeepSeek的无限可能 DeepSeek简介DeepSeek定义DeepSeek的发展历程DeepSeek的核心功能 如何使用DeepSeek注册与安装模型使用原则提示语的使用 人机共生 DeepSeek简介 DeepSeek定义 DeepSeek(中文名:深度求索)是一款由杭州深度求索人工智能基…

【wordpress】服务器已有LNMP环境(已运行WordPress),如何配置文档访问功能?

效果如图步骤确定文件存放目录404.html修改配置文件重启nginx服务 接下来是从win向linux云服务器上传文件使用Samba服务(没成功)使用xshell上传文件(大文件上传一堆乱码)winscp(好用) 效果如图 如果url不对…

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支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行…