当前位置: 首页 > news >正文

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)

相关文章:

  • Docker - 网络
  • 用冒泡排序法模拟qsort函数
  • LabVIEW中三种PSD分析VI的区别与应用
  • 微调训练方法概述:Fine-tuning、Prompt-tuning、P-tuning 及其他高效技术
  • pwa的基本使用
  • 2W8000字 LLM架构文章阅读指北
  • pytorch2.6.0版本测试YOLOv5中detect.py错误解决办法
  • http报文的content-type参数和spring mvc传参问题
  • 高频 SQL 50 题(基础版)_550. 游戏玩法分析 IV
  • 系统架构设计师—计算机基础篇—系统性能评价
  • 深度学习pytorch之4种归一化方法(Normalization)原理公式解析和参数使用
  • 小结:BGP协议
  • AtCoder Beginner Contest 001(A - 積雪深差、B - 視程の通報、C - 風力観測、D - 感雨時刻の整理)题目翻译
  • 贪心算法+题目
  • Sqli-labs
  • 从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(八) 聊天框用户列表
  • ByteBuddy
  • 联合省选 2025 游记
  • 【随手笔记】FFT+音乐频谱(二)
  • 工程化与框架系列(8)--持续集成实践
  • 连云港公司做网站/哪个行业最需要推广
  • 如何做1个手机网站/网页优化seo公司
  • 南宁物流公司网站建设/上海app定制开发公司
  • wordpress防站/郑州网站建设用户
  • 公司注册网站官网/2023年的新闻十条
  • 怎么自己做直播网站/网络推广员是什么