今天开始将自己所学过的MySQL的知识都尝试融会贯通,并且用写博客的方式记录分享下来。

今天讲的主题是MySQL的组织架构,对于学习一个中间件或者开源项目而言,我觉得最重要的便是先知晓其组织架构,以一个全局的姿态去观察架构之后,再有选择性的深入到细节,才能够学的快且有收获。

MySQL的架构图

根据图可以观察到,MySQL主要是分为Server层与存储引擎层两大块;而客户端的含义非常广泛,理论上只要可以连接到MySQL,就能够算上是一个客户端;我们主要讨论MySQL架构中的Server层与存储引擎层。

Server层

Server层可以看做是将MySQL的共性操作,也就是所有跨存储引擎的操作都放到了这一层进行实现,比如查询、解析、优化、缓存以及所有的内置函数、存储过程、视图、触发器

连接器的作用主要是判断用户是否可以利用某个账号登录MySQL,其中比较有意思的一点是一旦利用某个账号登录上去MySQL之后,它本次连接的权限便固定了,如果要让修改权限操作生效,那么便需要将本次连接重新连接,这样才会是新的权限。

查询缓存的作用是便是缓存一些热点查询的结果集,然后直接返回。它有很多很多的缺陷,它的实现是利用一个哈希表,将SQL语句的hash对应结果集。

查询缓存的缺陷很明显,主要为两个地方:

  1. 映射的Key是SQL语句的hash值,只要与key的查询有任何不一致的地方,都会查询缓存失败。
  2. 一旦进行更新,会直接清空缓存表。

    这个功能太过于鸡肋,所以直接在8.0中去除,后续也不会再提及。

解析器的作用是解析SQL语句,利用词法分析、语法分析检查SQL语句是否存在语法错误的情况。

优化器的作用便是对SQL语句进行优化,比如索引的选取,连接的顺序等,具体的如何优化在后续的篇章里会介绍;

执行器的作用是生成执行计划,然后调用存储引擎的接口,进行数据的操作。

以上便是Server层的大致内容,总的来说,Server层便是由连接、解析、优化、执行四个部分组成,MySQL的架构将解析与获取数据拆开,也为后续的一些特性的实现提供了基础。

存储引擎层

存储引擎层的操作主要负责的是数据的存储与读取,不同的存储引擎有不同的特性,现在应用最多的存储引擎是Innodb,现在已经是MySQL的默认存储引擎;而在早起的版本中,MySQL的默认存储引擎为MyISAM,后期我们也会有关于这两个存储引擎的比较。

我们所熟知的事务、行锁、多版本并发控制、事务日志都是由存储引擎层实现的,而上述的这些内容,Innodb存储引擎是都支持的,所以MySQL官方后续将其设立为了默认引擎。

存储引擎它底层由数十个底层函数,而Server层是执行器利用组合这些函数来达到读取数据的能力,我比较喜欢把这个过程称为“乐高积木”。

总结

MySQL的基础架构为其后续的细节实现提供了基础,Server层的内容我们后续比较重要的内容是优化器如何进行优化;存储引擎层的内容,我们主要学习Innodb的特性以及在某些条件下,使用其他存储引擎的便利性。

MySQL的成功,与其基础架构具有很大的关联性,在Oracle霸占市场的年代,凭借复制所扩展出来的横向扩展功能让其在数据库市场下独占一角;后续又通过Innodb的出现,优化补充了很多老版本所出现的问题。所以希望各位读者能够根据自己之前的所学,结合这篇文章,对于MySQL的基础架构能够有新的认识。

深入MySQL(一):MySQL的组织架构的更多相关文章

  1. MySQL性能调优与架构设计——第 16 章 MySQL Cluster

    第 16 章 MySQL Cluster 前言: MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等 ...

  2. MySQL性能调优与架构设计——第 15 章 可扩展性设计之Cache与Search的利用

    第 15 章 可扩展性设计之Cache与Search的利用 前言: 前面章节部分所分析的可扩展架构方案,基本上都是围绕在数据库自身来进行的,这样是否会使我们在寻求扩展性之路的思维受到“禁锢”,无法更为 ...

  3. MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分

    第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我 ...

  4. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  5. MySQL性能调优与架构设计——第3章 MySQL存储引擎简介

    第3章 MySQL存储引擎简介 3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所 ...

  6. MySQL InnoDB存储引擎体系架构 —— 索引高级

    转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...

  7. MySQL数据库的优化(下)MySQL数据库的高可用架构方案

    MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...

  8. MySQL运行原理与基础架构

    1.MySQL基础 MySQL是一个开放源代码的关系数据库管理系统.原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用. 2008年My ...

  9. DRBD+Heartbeat+Mysql高可用读写分离架构

    声明:本案例仅为评估测试版本 注意:所有服务器之间必须做好时间同步 架构拓扑 IP信息: Heartbeat安装部署 1.安装heartbeat(主备节点同时安装) [root@master1 ~]# ...

随机推荐

  1. 【洛谷】P1067 多项式输出

    原题链接:P1067 多项式输出 题目分析:学长推荐的OJ网站 --洛谷,发现挺好用的还可以下载提交出错的数据. 废话就不多说了,这道题属于基础题.提交出错主要是因为一些小细节不到位,这里就不一一赘述 ...

  2. func-spring-boot-starter 快速上手

    func-spring-boot-starter test 项目地址 func-spring-boot-starter项目地址: https://gitee.com/yiur/func-spring- ...

  3. docker安装、下载镜像、容器的基本操作

    文章目录 一.docker安装与基本使用 1.docker的安装.从远程仓库下载镜像 2.配置docker国内源 二.创建容器 1.create i.创建容器 ii.进入容器 iii.启动容器 2.r ...

  4. linux新分区无法新建文件夹

    问题 因为最初分区480g随便都给了home,后来发现备份以及导出系统至IOS都要另外插硬盘很麻烦.所以需要重新分区.使用装机U盘的live ubuntu20系统使用Gparted分区后,发现回到Ub ...

  5. Android 12(S) 图形显示系统 - 应用建立和SurfaceFlinger的沟通桥梁(三)

    1 前言 上一篇文章中我们已经创建了一个Native示例应用,从使用者的角度了解了图形显示系统API的基本使用,从这篇文章开始我们将基于这个示例应用深入图形显示系统API的内部实现逻辑,分析运作流程. ...

  6. Go 获取键盘输入,进制转换

    #### Go 获取键盘输入,进制转换 最近爱上<<珂矣的心灵独语>> 连续听一下礼拜也不觉得厌: 喜欢她的宁静与安然,喜欢她的坦荡与欢喜,喜欢她的禅意与智慧; ***撑着一苇 ...

  7. 中招了,重写TreeMap的比较器引发的问题…

    需求背景 给一个无序的map,按照value的值进行排序,value值越小,排在越前面. key和value都不为null value可能相同 返回结果为一个相同的有序map 代码如下所示: 1 // ...

  8. 3D建模服务提供更高效、专业的能力,“筑”力开发者

    3D建模服务(3D Modeling Kit)是HMS Core在图形图像领域又一技术开放.3D建模产品的定位就是要做快速.简洁.低成本的3D制作能力,并陆续开放给有3D模型.动画游戏制作等能力诉求的 ...

  9. es的settings设置详解

    //静态设置:只能在索引创建时或者在状态为 closed index(闭合的索引)上设置   index.number_of_shards //主分片数,默认为5.只能在创建索引时设置,不能修改   ...

  10. 【故障公告】数据库服务器 CPU 100% 引发全站故障

    今天 11:12-12:03 期间,园子使用的阿里云 RDS 实例(SQL Server2016 标准版,16核CPU)出现 CPU 100% 问题,引发全站故障,由此给您带来麻烦,请您谅解. 发现故 ...