【MySQL】运行原理(一):整体架构

MySQL 的发展历史和版本分支:

时间里程碑
1996 年MySQL1.0 发布。它的历史可以追溯到 1979 年,作者 Monty 用 BASIC 设计的一个报表工具。
1996 年 10 月3.11.1 发布。MySQL 没有 2.x 版本。
2000 年ISAM 升级成 MyISAM 引擎。MySQL 开源。
2003 年MySQL4.0 发布,集成 InnoDB 存储引擎
2005 年MySQL5.0 版本发布,提供了视图、存储过程等功能。
2008 年MySQLAB 公司被 Sun 公司收购,进入 SunMySQL 时代。
2009 年Oracle 收购 Sun 公司,进入 OracleMySQL 时代。
2010 年MySQL5.5 发布,InnoDB 成为默认的存储引擎。
2016 年MySQL 发布 8.0.0 版本。为什么没有 6、7?5.6 可以当成 6.x,5.7 可以当 成 7.x。

因为 MySQL 是开源的(也有收费版本),所以在 MySQL 稳定版本的基础上也发展出来了很多的分支,就像 Linux 一样,有Ubuntu、RedHat、CentOS、 Fedora 、Debian等等。大家最熟悉的应该是MariaDB,因为CentOS7里面自带了一个MariaDB。它是怎么来的呢?Oracle收购MySQL之后,MySQL创始人之一Monty担心MySQL数据库发展的未来(开发缓慢,封闭,可能会被闭源),就创建了一个分支MariaDB,默认使用全新的Maria存储引擎,它是原MyISAM存储引擎的升级版本。

其他流行分支:

  • Percona Server 是MySQL重要的分支之一,它基于InnoDB存储引擎的基础上,提升了性能和易管理性,最后形成了增强版的XtraDB引擎,可以用来更好地发挥服务器硬件上的性能。
  • 国内也有一些MySQL的分支或者自研的存储引擎,比如网易的InnoSQL,极数云舟的ArkDB。

我们操作数据库有各种各样的方式,比如Linux 系统中的命令行,比如数据库工具Navicat,比如程序,例如Java语言的JDBC API或者ORM框架。但大家有没有思考过,当我们的工具或者程序连接到数据库之后,实际上发生了什么事情?它的内部是怎么工作的?

MySQL架构

基于上面分析的流程,我们一起来梳理一下MySQL的内部模块。

1.模块详解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8355hj5-1603815339191)(MySQL执行一条SQL的流程.assets/image-20201027175312083.png)]

  1. Connector:用来支持各种语言和SQL的交互,比如PHP,Python,Java的 JDBC
  2. Management Serveices & Utilities:系统管理和控制工具,包括备份恢复、MySQL复制、集群等等
  3. Connection Pool:连接池,管理需要缓冲的资源,包括用户密码权限线程等等
  4. SQL Interface:用来接收用户的SQL命令,返回用户需要的查询结果
  5. Parser:用来解析SQL语句
  6. Optimizer:查询优化器
  7. CacheandBuffer:查询缓存,除了行记录的缓存之外,还有表缓存,Key缓存,权限缓存等等
  8. Pluggable Storage Engines:插件式存储引擎,它提供API给服务层使用,跟具体的文件打交道

2.架构分层

总体上,我们可以把MySQL分成三层,跟客户端对接的连接层,真正执行操作的服务层,和跟硬件打交道的存储引擎层(参考MyBatis:接口、核心、基础)。

  1. 连接层

    我们的客户端要连接到MySQL服务器3306端口,必须要跟服务端建立连接,那么管理所有的连接,验证客户端的身份和权限,这些功能就在连接层完成。

  2. 服务层

    连接层会把SQL语句交给服务层,这里面又包含一系列的流程:比如查询缓存的判断、根据SQL调用相应的接口,对我们的SQL语句进行词法和语法的解析(比如关键字怎么识别,别名怎么识别,语法有没有错误等等)。

    然后就是优化器,MySQL底层会根据一定的规则对我们的 SQL语句进行优化,最后再交给执行器去执行。

  3. 存储引擎

    存储引擎就是我们的数据真正存放的地方,在MySQL里面支持不同的存储引擎。再往下就是内存或者磁盘。

总结脑图

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A minor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值