Mysql逻辑架构

这个图相信大家并不陌生,这个就是mysql的逻辑结构图下面是主包让AI生成的翻译后的逻辑结构图:

我们先来看看各个部分的作用是什么

第一层:客户端连接层 (Client Layer)

这一层负责处理所有客户端连接到服务器的请求。责任就是:

  • 身份认证:验证用户名、密码、主机权限等。
  • 安全管理:检查用户是否有执行某个操作的权限。
  • 连接管理:管理连接的线程(如线程缓存thread_cache_size),处理SHOW PROCESSLIST等命令。
  • 如果连接校验通过,服务器会为该连接分配一个线程,后续该客户端的请求均在这个线程中进行。

这一层的内容还是很好理解的就是我们熟知的连接池。

第二层:核心服务层 (Server Layer / SQL Layer)

这是MySQL的“大脑”,负责处理SQL语句的解析、优化和执行。​这一层是跨存储引擎的,意味着不管底层用什么存储引擎,SQL语句都会在这里经过相同的处理流程。

1.SQL接口 (SQL Interface)​

职责​就是接收客户端发送的SQL命令(如DML、DDL、存储过程、视图等),并返回处理结果,相当于一个指挥官,接收命令并决定下一步交给谁处理。

2.解析器 (Parser)​

职责​就是对SQL语句进行词法分析和语法分析。将完整的SQL语句拆分成一个个的单词(SELECT*FROMt)。根据语法规则,判断SQL语句是否合法,最终生成一个解析树​(或语法树)。比如它会检查你是否把WHERE写成了WHER

3.优化器 (Optimizer)​

​这是最复杂的组件之一,它的任务是对解析器生成的解析树进行优化。如使用哪个索引或全表扫描?多表关联顺序​:(A JOIN B) JOIN C还是 A JOIN (B JOIN C)子查询优化​:将某些子查询转化为更高效的JOIN操作。最终产生一个它认为成本最低(cost-based)的执行计划。你可以使用EXPLAIN命令来查看优化器生成的执行计划。

4.查询缓存 (Query Cache) (MySQL 8.0中已移除)​

在8.0之前的版本,如果查询语句和数据完全一致,会直接从缓存返回结果。但由于其严重的瓶颈问题(任何表有更新,该表的所有查询缓存都会失效),在MySQL 8.0中这个功能被彻底移除了。

5.缓存和缓冲 (Caches & Buffers)​

这里指的是各种全局的缓存,如表缓存权限缓存等。InnoDB存储引擎自己的缓冲池(Buffer Pool)不属于这一层,而是属于存储引擎层。

6.系统管理和控制工具(System Management & Control Tools)

是MySQL服务器的全局管理员和大脑,负责制定规则、监控全局状态、进行后台维护。作用如下:

1.​制定全局规则与策略​:定义整个MySQL实例的安全策略,即所有用户的权限信息最终存储在 mysql.usermysql.db等系统表中。设置全局系统变量(如 max_connections最大连接数、innodb_buffer_pool_size缓冲池大小)。

2.资源调度与全局监控​:监控整个服务器的健康状态(CPU、内存、IO使用情况)。管理全局性的资源,如缓存(查询缓存、表缓存)、线程池的整体状态。记录全局性的日志,如错误日志(Error Log)、慢查询日志(Slow Query Log)、二进制日志(Binlog)。这些日志记录的是所有连接的行为。

3.后台维护与自治​:执行定期任务,如刷新缓存、更新统计信息、日志轮转(Log Rotation)。负责表的自动修复、崩溃恢复等。

而连接池就是调用了系统管理工具和控制工具进行鉴权等一系列操作。

第三层:存储引擎层 (Storage Engine Layer)

存储引擎负责数据的存储和提取。MySQL的核心服务层通过定义好的API与存储引擎进行交互。​这种设计使得存储引擎是“可插拔”的,你可以根据需要为不同的表选择不同的存储引擎。

这个就是最好sql执行到存储引擎,然后存储引擎再通过API去访问文件系统,最最后再把结果放回。

下面这个是主包从其他博主拿过来的图,对于逻辑架构的文章要比主包写的好很多https://www.cnblogs.com/binliubiao/p/15230069.html大家可以去仔细看看,内容还是很多的。

总结

这一篇主要讲的就逻辑架构,但是这一篇主包承认比较水,很多都是Ai生成的,因为主包认为这一篇的内容不是很难(皮毛的话)。

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

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

相关文章

Git 版本回退与撤销修改

作为版本控制管理器,Git应当具备版本回退等一系列功能——它的应用场景也很常见,当你在工作区开发时,忽然发现:怎么我这版本写的代码还不如上一版本好?这时,版本回退功能就派上用场了。一.版本回退1.概览首…

学习日记-JS+DOM-day54-9.12

1.javascript基本说明知识点核心内容重点JavaScript基础控制HTML内容与属性,实现动态行为(如开灯/关灯效果)src属性路径修正(./与../的区别)前端三要素HTML(内容)、CSS(样式&#xf…

使用tree命令导出文件夹/文件的目录树( Windows 和 macOS)

你可以在终端(命令提示符)中使用 tree 命令来清晰直观地查看和导出文件夹的目录结构。下面我会详细告诉你如何在 Windows 和 macOS 上使用它。 🖥️ tree 命令基本用法 tree 命令的核心作用是以树状图的形式展示指定路径下的目录和文件结构。…

GrapeCity Documents V8.0 Update2 重磅发布:性能飞跃、AI 赋能与文档处理全流程升级

作为葡萄城旗下服务端文档组件库,GrapeCity Documents(简称"GcDocs")凭借跨平台、高兼容的优势,已成为 众多开发者构建文档生成、编辑、转换与管理系统的首选。 近日,GcDocs 迎来 V8.0 Update2 版本更新&am…

水质在线监测系统御控物联网解决方案

一、行业背景与需求痛点水质安全是饮用水供应、工业生产、生态保护的核心要素。随着《水污染防治行动计划》的深入实施,传统水质监测方式面临三大挑战:时效性不足:人工采样-实验室分析周期长达24-72小时,难以实时捕捉污染事件&…

【完整源码+数据集+部署教程】仓库物品分类检测图像分割系统源码和数据集:改进yolo11-convnextv2

背景意义 研究背景与意义 随着现代物流和仓储管理的快速发展,物品分类与检测技术在提高仓库运营效率、降低人工成本方面发挥着越来越重要的作用。传统的物品管理方式往往依赖人工识别和分类,效率低下且容易出错。为了解决这一问题,基于计算机…

浏览器稳定性提升之路:线上崩溃率优化中的 Return 与 CHECK 之争

一、前言在大型 C 工程(例如 Chrome 浏览器内核)中,开发者经常会遇到这样的选择: 到底应该在关键点使用 CHECK 直接崩溃,还是使用 return、LOG 记录错误然后继续执行?这看似只是一个代码风格问题&#xff0…

【数据结构与算法Trip第3站】双指针

我们来详细讲解一下算法中非常常用且重要的技巧——双指针法。 这是一个概念清晰但应用极其广泛的技术,掌握它能帮助你高效解决许多问题。 一、什么是双指针法? 核心思想:顾名思义,就是在遍历对象(通常是数组或链表&am…

时序数据库选型指南:基于大数据视角的IoTDB应用优势分析详解!

目录 一、时序数据库选型的基本原则 1.1 数据特征与需求分析 1.1.1 数据规模与写入负载 1.1.2 查询需求 1.1.3 数据保留与归档策略 1.1.4 系统扩展性与高可用性 1.2 技术架构与系统性能评估 1.2.1 写入性能 1.2.2 查询性能 1.2.3 数据压缩能力 1.2.4 高可用性与灾备…

缓存三大劫攻防战:穿透、击穿、雪崩的Java实战防御体系(三)

第三部分:缓存雪崩——大量key失效引发的“系统性崩溃” 缓存雪崩的本质是“大量缓存key在同一时间失效,或缓存集群整体故障”,导致请求全量穿透至DB,引发“系统性崩溃”。 案例4:电商首页的“批量过期”灾难 故障现场…

解决docker配置了镜像源但还会拉取官方镜像源的问题

🏓我们有时候虽然配置了Docker国内镜像源,但是还是会绕过去请求官方镜像源(docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded),现在我们就来解决一…

R语言水文、水环境模型优化:从最速上升法、岭分析到贝叶斯优化与异方差处理,涵盖采样设计、代理模型与快速率定等

在水利工程、环境治理、生态保护、机械设计与航天航空等现代工业与科学领域,数学模型已成为不可或缺的核心分析、预测与决策工具。然而,随着系统复杂性的日益增长,模型构建的精确性、参数率定的效率以及不确定性量化的重要性被提到了前所未有…

关于数据采集与处理心得(一)

目前所实践的经验告知我!1. 别企图妄想一个脚本解决所有问题要学会对问题分解,编写多个脚本一步步将问题解决,如果每一个步骤都为了下一个阶段的成果打地基,也是非常OK的。同时要尽可能将每一个编写的脚本都尽到最大的利用率2. 编…

IvorySQL 适配 LoongArch® 龙架构

IvorySQL 社区很高兴向您宣布,IvorySQL 已成功适配LoongArch 龙架构,为国产数据库与国产芯片的深度融合迈出了坚实一步。这一里程碑标志着 IvorySQL 在推动国产化生态建设、赋能信创产业方面取得了重大突破,为用户提供更高效、稳定、安全的数…

数据库分库分表是考虑ShardingSphere 还是Mycat?

http://www.mycat.org.cn/ https://shardingsphere.apache.org/ 这是一个非常核心且优秀的问题。在选择 ShardingSphere 和 Mycat 之间,对于游戏这种高性能、高复杂度的场景,目前行业内的主流选择和发展趋势毫无疑问是 ShardingSphere。 我会为你详细对…

mysql分库分表数据量核查问题

场景: 使用分库分表的业务有时分库数量几百甚至上千,当主管需要查询每个库中的数据,掌握数据分布情况。要你查看哪些库中的表数量大于某个量级的给找出来 ,你会怎么做。 例子 : mysql库数量:db_xx_devicein…

python之socket网络编程

引言 在互联网时代,网络编程已经成为开发人员必备的技能之一。无论是Web开发、实时通信还是分布式计算,都离不开网络编程的支持。Python提供的socket模块为我们提供了简洁而强大的接口,可以轻松实现客户端和服务器之间的通信。 Socket编程是网…

WPF Telerik.Windows.Controls.Data.PropertyGrid 自定义属性编辑器

1.AI帮忙定义新用户控件 2.在属性上添加TelerikEditorAttribute特性 private ObservableCollection<string> _axisOrder;[Display(Description "点位", GroupName "通用", Name "轴&顺序", Order 1)][DataMember][TelerikEditorAt…

【超详细】别再看零散的教程了!一篇搞定Gitee从注册、配置到代码上传与管理(内含避坑指南最佳实践)

&#x1f525;个人主页&#xff1a;艾莉丝努力练剑 ❄专栏传送门&#xff1a;《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题、洛谷刷题、C/C基础知识知识强化补充、C/C干货分享&学习过程记录 &#x1f349;学习方向&#xff1a;C/C方向学习者…

43.shell脚本循环与函数

shell脚本循环与函数 for 循环 for 循环用于一次性读取多个信息&#xff0c;逐一对信息进行操作处理&#xff0c;特别适合处理有范围的数据 语法 for 变量名 in 取值列表 do命令序列 done批量创建用户 #!/bin/bashtouch /root/users.txt echo aka blues cloe dio foks > /ro…