当前位置:网站首页>mysql 系列:总体架构概述
mysql 系列:总体架构概述
2022-06-23 14:38:00 【yue_xin_tech】
前言
使用 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 的大脑,通过一系列组件得到数据操作的最优解。存储层:负责数据的存储、检索。
SQL 层
前面已经大体介绍过连接层了, 我们来看看 SQL 层,当接收到命令后,mysql 并不会傻乎乎的直接去拿数据,而是会分析当前 sql 语句的各种执行效率,进而获取一个最优的执行计划。
在 SQL 层主要分为了下面几个功能:
Query cache:缓存查询结果集,并且下次的查询命中了缓存,那么会跳过后面的执行,直接返回缓存结果。Parser:解析器,根据 SQL 语句构建内部使用的解析树,用于方便获取 SQL 信息,如 SQL 的语义和语法信息。Optimizer:优化器,通过分析存储引擎的操作成本以及表的统计信息,输出高效的执行计划。比如在查询分析中,表扫描或索引扫描哪个执行效率高,则选择哪个。
除了上面功能外,mysql 的内置函数、存储过程、触发器和视图也是在这一层实现的。
存储层
前面提到过优化器会输出执行计划,而具体的实施则是在存储层这一块。存储层在 mysql 这里设计成了可插播的插件,也就是说只要符合了标准化接口(API),那么就可以实现属于自己的一个存储引擎。
存储引擎是用来存储、检索数据的,不同的存储引擎有不同的特性,像 InnoDB 支持事务、外键,而 MyISAM 就不支持。
一般我们不需要关心 SQL 语句会涉及到哪些存储引擎,就像前面提到过的,已经通过标准化接口抽象出来了。只是优化器这一层可能需要根据不同的存储引擎做出不同的选择。
总结
mysql 的总体架构就如上所述了,实际上,mysql 还有很多的重要知识点需要掌握,像锁的机制,MVCC 版本控制,查询优化等,掌握了这些,才算对 mysql 有一个总体认识,后面会继续研究,分享给大伙!
感兴趣的朋友可以搜一搜公众号「 阅新技术 」,关注更多的推送文章。
可以的话,就顺便点个赞、留个言、分享下,感谢各位支持!
阅新技术,阅读更多的新知识。
边栏推荐
- MySQL 创建和管理表
- Résumé de la méthode de déduction de la force 513 - trouver la valeur du coin inférieur gauche de l'arbre
- 腾讯云服务器发送邮件失败
- 加快 yarn install 的三个简单技巧
- 【Pyside2】 pyside2的窗口在maya置顶(笔记)
- The team of China University of Mines developed an integrated multi-scale deep learning model for RNA methylation site prediction
- Force deduction solution summary 513- find the value of the lower left corner of the tree
- The well-known face search engine provokes public anger: just one photo will strip you of your pants in a few seconds
- 百万奖金等你来拿,首届中国元宇宙创新应用大赛联合创业黑马火热招募中!
- 信贷产品额度定价场景下的回归模型效果评估
猜你喜欢

JS垃圾回收

2021-04-15

The team of China University of Mines developed an integrated multi-scale deep learning model for RNA methylation site prediction

Introduction to helm basics helm introduction and installation

Distributed database uses logical volume to manage storage expansion
Xampp中mysql无法启动问题的解决方法
详解Redis分布式锁的原理与实现

巴比特 | 元宇宙每日必读:Meta、微软等科技巨头成立元宇宙标准论坛组织,华为、阿里加入,英伟达高管称欢迎来自加密世界的参与者...

JSR303数据校验

阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题
随机推荐
PHP specified fields are more than 100 in positive order and less than 100 in random order
2021-04-15
Error creating bean with name xxx Factory method ‘sqlSessionFactory‘ threw exception; nested excepti
The new version of Alibaba Seata finally solves the idempotence, suspension and empty rollback problems of the TCC mode
腾讯云服务器发送邮件失败
volatile~多线程下变量不可见
[cloud based co creation] how manufacturing enterprises build "barcode factories"
等保備案是什麼意思?應該去哪裏辦理備案?
KDD'22「阿里」推荐系统中的通用序列表征学习
AXI_Round_Robin_Arbiter 设计 - AW、W通道部分
Distributed database uses logical volume to manage storage expansion
[Level 2 warranty] which brand of Fortress machine is good for Level 2 warranty?
狂奔的极兔,摔了一跤
聚合生态,使能安全运营,华为云安全云脑智护业务安全
Golang -- multiple processing scenarios for files
Helm 基础入门 Helm介绍与安装
WebService interface publishing and calling
JS garbage collection
TS encapsulation request
Uniswap acquires genie, an NFT transaction aggregator. Will the NFT transaction market change?