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

○ 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.rhkb.cn/news/26742.html

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

相关文章

【踩坑随笔】`npm list axios echarts`查看npm依赖包报错

npm list axios echarts查看npm依赖包出现以下报错,原因就是包的版本匹配问题,按照提示降axios版本或者自己升找合适的got版本,我这里是选择了降版本。本文记录仅做解决思路参考不一定适配大家的实际情况。 weed-detection-system1.0.0 E:\P…

大唐杯——阶段二01

03 5G寻呼 UE(User Equipment) UE是用户设备(User Equipment)的缩写,指的是移动通信网络中的终端设备,例如手机、平板电脑、物联网传感器等。 AMF(Access and Mobility Management Function&a…

小程序画带圆角的圆形进度条

老的API <canvas id"{{canvasId}}" canvas-id"{{canvasId}}" style"opacity: 0;" class"canvas"/> startDraw() {const { canvasId } this.dataconst query this.createSelectorQuery()query.select(#${canvasId}).bounding…

SimVS: Simulating World Inconsistencies for Robust View Synthesis 论文解读

目录 一、概述 二、相关工作 三、SimVS 1、利用视频模型模拟世界的不一致性 2、效果 一、概述 该论文提出了一种名为SimVS的视频模型方法&#xff0c;旨在解决稀疏多视角图像捕捉中因动态变化&#xff08;光照变化、物体运动&#xff09;导致的视图合成鲁棒性问题。 动机&a…

华为OD机试真题:跳房子I (E卷、Java)

华为OD机试&#xff08;E卷D卷C卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 跳房子&#xff0c;也叫跳飞机&#xff0c;是一种世界性的儿童游戏。 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格。跳房子的过程中&#xff0c;可以向前跳&…

快速排序算法详解

算法原理 快速排序是一种分治的策略的排序算法。它的核心排序思想是将问题不断的分解为子问题。以数组为例进行介绍更容易理解&#xff0c;创建一个数组或者vector&#xff0c;假设是std::vector<int> a{3&#xff0c;2, 1, 5, 4,7}&#xff0c;要对a从小到大进行排序&a…

Windows本地Docker+Open-WebUI部署DeepSeek

最近想在自己的电脑本地部署一下DeepSeek试试&#xff0c;由于不希望污染电脑的Windows环境&#xff0c;所以在wsl中安装了ollama&#xff0c;使用ollama拉取DeepSeek模型。然后在Windows中安装了Docker Desktop&#xff0c;在Docker中部署了Open-WebUI&#xff0c;最后再在Ope…

题解 | 牛客周赛82 Java ABCDEF

目录 题目地址 做题情况 A 题 B 题 C 题 D 题 E 题 F 题 牛客竞赛主页 题目地址 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 做题情况 A 题 判断字符串第一个字符和第三个字符是否相等 import java.io.*; import java.math.*; import java.u…

Codeforces Round 1007 (Div. 2)(ABCD1)

A. The Play Never Ends 翻译&#xff1a; 让我们来介绍一种双人游戏--乒乓球&#xff0c;在这种游戏中&#xff0c;胜负永远分明&#xff0c;不可能出现平局。 索赛、福福和浩海三人想用一生的时间打乒乓球。他们决定用以下方式永远打下去&#xff1a; 在每场比赛中&#xff…

swift 开发效率提升工具

安装github copliot for xcode github/CopilotForXcode brew install --cask github-copilot-for-xcode安装swiftformat for xcode brew install swiftformatXcode Swift File代码格式化-SwiftFormat

蜂鸣器使用

1、蜂鸣器原理 无源蜂鸣器模块根据输入的 不同方波信号&#xff08;作为震荡源&#xff09;可以发出不同的声音。驱动电路中三极管电阻一般为1K-4K都行&#xff0c;能够让三极管导通即可。&#xff08;三极管即带箭头的部分&#xff0c;基极和发射机&#xff08;PNP&#xff09…

drawDB:一款免费数据库设计工具

drawDB 是一款基于 Web 的免费数据库设计工具&#xff0c;通过拖拽、复制、粘贴等方式进行数据库建模设计&#xff0c;同时可以生成相应的 SQL 脚本。 功能特性 drawDB 目前可以支持 MySQL、MariaDB、PostgreSQL、SQL Server 以及 SQLite 数据库&#xff0c;核心功能包括&…

【AI论文】将1568个标记压缩到单个向量中并再解压:探索嵌入空间容量的极限

摘要&#xff1a;近期&#xff0c;一系列研究致力于解决将标记序列压缩为更短的实值向量序列的问题&#xff0c;这些向量序列将作为输入&#xff0c;替代标记嵌入或键值缓存。这些方法有助于减少现有语言模型中的计算量。尽管使用了强大的模型作为编码器&#xff0c;但无损压缩…

【JavaWeb学习Day20】

Tlias智能学习系统 员工登录 三层架构&#xff1a; Controller&#xff1a;1.接收请求参数&#xff08;用户名&#xff0c;密码&#xff09;2.调用Service方法3.响应结果 具体实现&#xff1a; /*** 登录*/ ​ PostMapping("/login") public Result login(Reque…

.net开源商城_C#开源商城源码_.netcore开源商城多少钱

在现今的电子商务领域&#xff0c;开源商城系统为企业和开发者提供了丰富的选择和可能性。其中&#xff0c;.NET开源商城、C#开源商城源码以及.NET Core 开源商城备受关注。然而&#xff0c;对于这些开源商城的价格问题&#xff0c;往往是人们在选择时需要重点考虑的因素之一。…

Java并发编程之ConcurrentHashMap的原理和使用

ConcurrentHashMap(CHM)是Java为解决高并发场景下哈希表性能瓶颈而设计的线程安全容器,其核心目标在于: 线程安全‌:避免多线程操作导致的数据不一致问题‌;高吞吐量‌:通过细粒度锁和无锁化设计降低线程竞争‌;动态扩展‌:支持自动扩容与数据结构优化(如链表转红黑树…

问题修复-后端返给前端的时间展示错误

问题现象&#xff1a; 后端给前端返回的时间展示有问题。 需要按照yyyy-MM-dd HH:mm:ss 的形式展示 两种办法&#xff1a; 第一种 在实体类的属性上添加JsonFormat注解 第二种&#xff08;建议使用&#xff09; 扩展mvc框架中的消息转换器 代码&#xff1a; 因为配置类继…

《基于 LIME 的低照度图像处理》开题报告

目录 一、研究目的和意义 1.研究目的 2.研究意义 二、国内外研究现状和发展趋势 三、研究内容、研究方法及可行性分析 1、研究内容 2、研究方法 3、可行性分析 四、项目特色与创新点 1、面向特定应用场景的针对性研究 1.多算法比较与选择的严谨性 2.基于硬件平台的深…

【Linux文件IO】系统IO详情

目录 一、前言 二、相关API介绍 2.1 open 2.2 read 2.3 write 2.4 lseek 2.5 close 三、简单示例 3.1 示例1 3.2 示例2 一、前言 在 Linux 系统编程中&#xff0c;系统 I/O&#xff08;又称低级 I/O&#xff09;是直接通过操作系统提供的系统调用实现的文件操作接口…

MATLAB代码:机器学习-分类器

本文包含三种机器学习分类器的MATLAB实现方式代码块&#xff1a;支持向量机、决策树、逻辑回归。 目录 SVM/支持向量机(Support Vector Machine) 原理 MATLAB实现 实例代码块 采用搜索确定参数 Decision Tree / 决策树 原理 MATLAB实现 实例代码块 Logistic Regressio…