MySQL的架构体系

在对MySQL深入的学习之前,我们首先要了解MySQL的一个完整的架构。

首先了解到MySQL是一个开源的数据库管理系统,它相对于Oracle更加地轻量、成本低,随着功能的日益完善,它也变得备受企业的喜爱,尤其是中小企业。

MySQL的架构体系_第1张图片

有图可知,MySQL的最上层是连接器,下面有连接池、系统管理和控制工具、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。

(一)连接层: 最长层是一些客户端和连接服务,包括本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。

(二)服务层: 第二层结构主要完大多数的核心服务功能,入SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化,如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。如果是SELECT语句,服务器还会查询内部的缓存。如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。

  1. 连接池:由于每次建立都需要消耗很多时间,连接池的作用就是将这些连接进行一个预缓存,在下次需要连接的时候,就不需要去创建,之间是有已经建议好的连接,提升了服务的性能。

  2. 系统管理和控制工具:系统和控制工具,例如备份的恢复、MySQL的复制、集群等。

  3. SQL接口:接受用户的SQL命令,并且返回用户需要查询的结果。
    比如:select from就是调用了SQL Interface。

  4. 解析器:SQL命令就是传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。
    主要功能:
    ● 将SQL语句分解成数据结构,并将这个结构传递给后续的步骤,以后SQL语句的传递和处理就是基于这个结构的。
    ● 如果在分解构成中遇到错误,那么就说明这个SQL语句是不合理的。

  5. 优化器:查询优化器,SQL语句在查询之前会使用查询优化器对查询语句进行优化。它使用的是“选取-投影-连接”策略进行查询。
    举例:

SELECT name,sex FROM student WHERE id = 1;

这条SQL语句在执行的时候:SELECT查询先根据WHERE语句进行确认在查询student表,而不是先将student表全部查询出来以后进行id判断。
SELECT查询也会先根据 name 和sex 列进行属性投影,而不是查询出整整一行的数据,再在这种选取两列。
将这两个查询机制联合起来就成为最终的查询结果。

  1. 缓存器:查询语句,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

通过LRU算法将数据的冷端溢出,未来得及时刷新到磁盘的数据页,叫脏页。
这个缓存机制是由一系列小缓存组成的。比如:表缓存、key缓存、权限缓存等。

(三)引擎层
存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,与文件打交道的子系统。也是MySQL中最具有特色的一个地方。(是真正的落地实现的)

MySQL的存储引擎是插件式的,它根据MySQL AB公司提供的文件访问层 的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)

现在有了很多种的存储引擎,各个存储引擎的有时各不相同,最常用的有InnoDB、MyISAM、BDB。

MySQL也支持自己定制存储引擎,甚至一个库中不同表使用不同的存储引擎都是被允许的。

服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。

(四)物理文件存储层
数据存储层,主要是将数据存储在运行与裸设备的文件子系统之上,并完成与存储引擎的交互。

MySQL中的物理文件包括三种:

① 日志文件
事务中的隔离级别的实现就依赖于日志文件的

  1. Error log错误日志:记录遇到的所有严重的错误信息,每次启动关闭的信息信息;
  2. Binary log 二进制日志:也就是binlog,记录所有修改数据库的操作;
  3. Query log 查询日志:记录所有查询操作,体积较大,开启后对性能有影响。
  4. Slow Query log 慢查询日志:记录所有执行时间超过long_query_time的SQL语句和达到min_examined_row_limit条距离的语句。
  5. InnoDB redo log:记录InnoDB所做的物理变更和事务信息。
  6. 中继日志:只从复制产生,用户slave机读取,复制master机的SQL操作。

②数据文件

  1. .frm文件:表结构定义信息;
  2. .MYD文件:MyISAM引擎的数据文件;
  3. .MYI文件:MyISAM引擎的索引文件;
  4. .ibd文件和 .ibdata文件:InnoDB的数据和索引; .ibdata配置为共享表空间时使用

③其他文件

  1. 系统配置文件:/etc/my.cnf;
  2. pid文件:存储自己的进程ID;
  3. socket文件:连接客户端使用;

下一篇: ===》 MySQL中的引擎

你可能感兴趣的:(mysql,mysql,开发语言,数据库)