MySQL基础架构

一、MySQL体系架构

引用网图:
MySQL基础架构_第1张图片
MySQL 自上而下可分为网络连接层、服务层、存储引擎层和系统文件层。

网络连接层

客户连接器:提供MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术。比如JAVA 通过 JDBC API连接连接。

服务层

服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。

  • 连接池:负责存储和管理客户端与数据库的连接,一个线程负责管理一个
    连接。
  • 系统管理和控制工具:例如备份恢复、安全管理、集群管理等
  • SQL接口:用于接受客户端发送的各种SQL命令,并且返回用户需要查询的结
    果。比如DML、DDL、存储过程、视图、触发器等。
  • 解析器:负责将请求的SQL解析生成一个"解析树"。然后根据一些MySQL规则进一步检查解析树是否合法。
  • 查询优化器:当“解析树”通过解析器语法检查后,将交由优化器将其转化成执行计划,然后与存储引擎交互。
  • 缓存:缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

存储引擎层

存储引擎负责MySQL中数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异 。现在有很多种存储引擎,各有各的特点,最常见的是MyISAM和InnoDB。

系统文件层

该层负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,是文件的物理存储层。主要包含日志文件,数据文件,配置文件,pid 文件,socket 文件等。

  • 日志文件:包含错误日志,通用查询日志,二进制日志,慢查询日志
  • 配置文件:用于存放MySQL所有配置信息文件
  • 数据文件:
    • db.opt 文件:记录这个库的默认使用的字符集和校验规则。
    • frm 文件:存储与表相关的元数据(meta)信息,包括表结构的定义信息等,每一张表都会有一个frm 文件。
    • MYD 文件:MyISAM 存储引擎专用,存放 MyISAM 表的数据(data),每一张表都会有一个MYD 文件。
    • MYI 文件:MyISAM 存储引擎专用,存放 MyISAM 表的索引相关信息,每一张 MyISAM 表对应一个 .MYI 文件。
    • ibd文件和 IBDATA 文件:存放 InnoDB 的数据文件(包括索引)。InnoDB 存储引擎有两种表空间方式:独享表空间和共享表空间。独享表空间使用 .ibd 文件来存放数据,且每一张InnoDB 表对应一个 .ibd 文件。共享表空间使用 .ibdata 文件,所有表共同使用一个(或多个,自行配置).ibdata 文件。

二、MySQL运行机制

MySQL基础架构_第2张图片

三、MySQL 存储引擎

目前常用的MySQL常用引擎为InnoDB和MyISAM

项目 InnoDB MyISAM
事务 支持 不支持
外键 支持 不支持
锁机制 行/表锁 表锁
索引结构 聚簇索引(存储数据与索引) 非聚簇索引
并发处理能力 多事务隔离级别,且采用MVCC支持高并发 写时较低(表锁)但仅有查询时较快

适用场景:

  • MyISAM

    • 不需要事务支持
    • 并发相对较低
    • 数据修改相对较少,以读为主
    • 数据一致性要求不高
  • InnoDB

    • 需要事务支持
    • 行级锁定对高并发有很好的适应能力
    • 数据更新较为频繁的场景
    • 数据一致性要求较高
    • 硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,减少磁盘IO

你可能感兴趣的:(MySQL,mysql)