一、MySQL介绍
MySQL 由瑞典MysqlAb 公司开发,属于 Oracle旗下产品。MySQL 是当前最流行的关系型数据库管理系统。京东、阿里、等互联网大厂基本都是使用Myql数据库进行业务数据的存储。
MySQL的版本众多,目前最新版本为MySQL8,但绝大部分厂商当前主要是用还是MySQL5.7.32左右的版本。
除此之外,MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是Mysql诞生出了很多分支和相关替代产品
二、Mysql分支以及替代
MySQL 变种有好几个,主要有三个久经考验的主流变种:Percona Server, MariaDB 和 Drizzle。它们都有活跃的用户社区和某种程度上的商业支持,均由独 立的服务供应商支持。
D r i zz l e
Drizzle 是真正的 MySQL 分支,而且是完全开源的产品,而非只是个变种或 增强版本。它并不与 MySQL 兼容不能简单地将 MySQL 后端替换为 Drizzle。
Drizzle 与 MySQL 有很大差别,进行了一些重大更改,甚至 SQL 语法的变化 都非常大,设计目标之一是提供一种出色的解决方案来解决高可用性问题。在实 现上,Drizzle 清除了一些表现不佳和不必要的功能,将很多代码重写,对它们进 行了优化,甚至将所用语言从 C 换成了 C++。
此外,Drizzle 另一个设计目标是能很好的适应具有大量内容的多核服务器、 运行 Linux 的 64 位机器、云计算中使用的服务器、托管网站的服务器和每分钟 接收数以万计点击率的服务器并且大幅度的削减服务器成本。
M a r i a D B
在 Sun 收购 MySQL 后,Monty Widenius ,这位 MySQL 的创建者,因不认同 MySQL 开发流程而离开 Sun。他成立了 Monty 程序公司,创立了 MariaDB。MariaDB 的目标是社区开发,Bug 修复和许多的新特性实际上,可以将 MariaDB 视为 MySQL 的扩展集,它不仅提供 MySQL 提供的所有功能,还提供其他功能。MariaDB 是 原版 MySQL 的超集,因此已有的系统不需要任何修改就可以运行。
诸如 Google ,Facebook 、维基百科等公司或者网站所使用了 MariaDB 。不过 Monty 公司不是以赢利为目的,而是由产品驱动的,这可能会带来问题,因为没 有赢利的公司不一定能长久维持下去。
Pe r c ona Se r ve r
由领先的 MySQL 咨询公司 Percona 发布,Percona 公司的口号就是“The Database Performance Experts” ,Percona 的创始人也就是《高性能 MySQL》书 的作者。
Percona Server 是个与 MySQL 向后兼容的替代品,它尽可能不改变 SQL 语法、 客户端/服务器协议和磁盘上的文件格式。任何运行在 MySQL 上的都可以运行在 Percona Server 上而不需要修改。切换到 Percona Server 只需要关闭 MySQL 和启 动 PerconaServer ,不需要导出和重新导入数据。
Percona Server 有三个主要的目标:透明,增加允许用户更紧密地查看服务 器内部信息和行为的方法。比如慢查询日志中特别增加的详细信息;性能, Percona Server 包含许多性能和可扩展性方面的改进,还加强了性能的可预测性 和稳定性。其中主要集中于 InnoDB;操作灵活性,Percona Server 使操作人员和 系统管理员在让 MySQL 作为架构的一部分而可靠并稳定运行时提供了很多便利。
一般来说,Percona Server 中的许多特性会在后来的标准 MySQL 中出现。 国内公司阿里内部就运行了上千个 Percona Server 的实例。
三、Mysql基础体系架构
官方给出的Mysql基础体系架构图如下:
可以看出 MySQL 最上层是连接组件。下面服务器是由连接池、管理工具和服务、SQL 接口、解析器、优化器、缓存、存储引擎、文件系统组成。
连接池:由于每次建立建立需要消耗很多时间,连接池的作用就是将这些连 接缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。
管理工具和服务:系统管理和控制工具,例如备份恢复、Mysql 复制、集群 等
SQL 接口:接受用户的 SQL 命令,并且返回用户需要查询的结果。比如 select from 就是调用 SQL Interface
解析器:SQL 命令传递到解析器的时候会被解析器验证和解析。解析器主要 功能:
a . 将 SQL 语句分解成数据结构,并将这个结构传递到后续步骤,以后 SQL 语句的传递和处理就是基于这个结构的
b. 如果在分解构成中遇到错误,那么就说明这个 sql 语句是不合理的
优化器:查询优化器,SQL 语句在查询之前会使用查询优化器对查询进行优 化。
缓存器: 查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直 接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key 缓存, 权限缓存等。
存储引擎、文件系统的作用,后面会细讲。