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 有一个总体认识,后面会继续研究,分享给大伙!


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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,002评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,777评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,341评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,085评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,110评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,868评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,528评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,422评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,938评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,067评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,199评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,877评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,540评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,079评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,192评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,514评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,190评论 2 357

推荐阅读更多精彩内容