mysql 系列:总体架构概述

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 使用 mysql 很多年了,但也没怎么深入研究过,准备最近了解下 mysql 的相关知识点。看看这款程序界里的神器是怎么运转的。

前言

使用 mysql 很多年了,但也没怎么深入研究过,准备最近了解下 mysql 的相关知识点。看看这款程序界里的神器是怎么运转的。

mysql 的架构模式

mysql 采用的是 C/S 架构,也就是我们平常所说的客户端-服务器模型。像我们平常所用的 workbench、nacivat 就是客户端,当然,还有命令行工具。

它们会根据指定的 ip、prot 连到服务器,通过一定的协议来进行 SQL 的执行。这些协议包括最广泛使用的 TCP 协议,也包括了适用于本地通信的套接字、共享内存、命名管道等。

mysql 的每一次连接在服务端都有一个专门的线程来管理,并且采用的网络 IO 模型是 select/poll,并非 epoll。

主要是因为 select/poll 可移植性好,很多系统都支持。而且 mysql 的瓶颈不在于网络连接上,对于连接数少,并且连接都很活跃的 mysql 而言,select/poll 是更好的选择。
(注:select、poll、epoll 是 IO 多路复用模型,能同时监听多个 I/O 事件的状态,占用资源少,性能高。)

mysql 的 2 个阶段

当服务器接收到客户端的请求连接后,将会进入连接阶段命令阶段

连接阶段主要执行了以下任务:

  • 确定客户端和服务器当前的版本功能;
  • 确定是否需要进行 SSL 通信;
  • 服务端进行客户端的身份认证;

当上面的连接阶段 ok 后,将会进入命令阶段,我们平常所见的 SQL 操作就是在这个阶段执行的,如

  • COM_QUERY:用于向服务器发送一个立即执行的 SQL 查询
  • COM_CREATE_DB:用于创建数据库的命令

总体架构概述

mysql 的 3 层架构

上面的 2 个阶段是从 mysql 的连接生命周期来划分的,实际从逻辑架构上,mysql 可以划分为 3 层:

  • 连接层:主要负责连接池、通信协议、认证授权等;
  • SQL 层:这一层是 mysql 的大脑,通过一系列组件得到数据操作的最优解。
  • 存储层:负责数据的存储、检索。
    mysql 的 3 层架构

SQL 层

前面已经大体介绍过连接层了, 我们来看看 SQL 层,当接收到命令后,mysql 并不会傻乎乎的直接去拿数据,而是会分析当前 sql 语句的各种执行效率,进而获得一个最优的执行计划。

在 SQL 层主要分为了下面几个功能:

  • Query cache:缓存查询结果集,并且下次的查询命中了缓存,那么会跳过后面的执行,直接返回缓存结果。
  • Parser:解析器,根据 SQL 语句构建内部使用的解析树,用于方便获取 SQL 信息,如 SQL 的语义和语法信息。
  • Optimizer:优化器,通过分析存储引擎的操作成本以及表的统计信息,输出高效的执行计划。比如在查询分析中,表扫描或索引扫描哪个执行效率高,则选择哪个。

除了上面功能外,mysql 的内置函数、存储过程、触发器、视图也是在这一层实现的。

存储层

前面提到过优化器会输出执行计划,而具体的实施则是在存储层这一块。存储层在 mysql 这里设计成了可插播的插件,也就是说只要符合了标准化接口(API),那么就可以实现属于自己的一个存储引擎。

存储引擎是用来存储、检索数据的,不同的存储引擎有不同的特性,像 InnoDB 支持事务、外键,而 MyISAM 就不支持。

一般我们不需要关心 SQL 语句会涉及到哪些存储引擎,就像前面提到过的,已经通过标准化接口抽象出来了。只是优化器这一层可能需要根据不同的存储引擎做出不同的选择。

总结

mysql 的总体架构就如上所述了,实际上,mysql 还有很多的重要知识点需要掌握,像锁的机制MVCC 版本控制查询优化等,掌握了这些,才算对 mysql 有一个总体认识,后面会继续研究,分享给大伙!


感兴趣的朋友可以搜一搜公众号「 阅新技术 」,关注更多的推送文章。
可以的话,就顺便点个赞、留个言、分享下,感谢各位支持!
阅新技术,阅读更多的新知识。
阅新技术

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
85 3
Mysql高可用架构方案
|
1月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
65 2
|
1月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
123 1
|
1月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
84 0
|
12天前
|
SQL 存储 缓存
【赵渝强老师】MySQL的体系架构
本文介绍了MySQL的体系架构,包括Server层的7个主要组件(Connectors、Connection Pool、Management Service & Utilities、SQL Interface、Parser、Optimizer、Query Caches & Buffers)及其作用,以及存储引擎层的支持情况,重点介绍了InnoDB存储引擎。文中还提供了相关图片和视频讲解。
【赵渝强老师】MySQL的体系架构
|
23天前
|
存储 监控 Linux
Docker技术架构概述
【10月更文挑战第22天】Docker采用CS架构,Client与Daemon交互,Compose管理多容器应用。
|
27天前
|
存储 关系型数据库 MySQL
mysql 引擎概述
MySQL存储引擎是处理不同类型表操作的组件,InnoDB是最常用的默认引擎,支持事务、行级锁定和外键。MySQL采用插件式存储引擎架构,支持多种引擎,如MyISAM、Memory、CSV等,每种引擎适用于不同的应用场景。通过`SHOW ENGINES`命令可查看当前MySQL实例支持的存储引擎及其状态。选择合适的存储引擎需根据具体业务需求和引擎特性来决定。
|
1月前
|
前端开发 Unix Linux
KVM 架构概述
【10月更文挑战第12天】KVM是基于硬件辅助虚拟化技术的虚拟机监控器,核心依赖于CPU的虚拟化支持如Intel VT和AMD-V。
|
1月前
|
存储 分布式计算 算法
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
48 0
下一篇
无影云桌面