MySQL架构原理之体系架构

数据库架构演进

服务端数据库架构演进主要包括:

  1. 单库。单库简单,存在数据量大、读写压力大、单库宕机等问题。
  2. 主从结果。具备一定的高可用性,从库可以提供读服务,缓解读压力;仍然存在数据量大、写压力大等问题。
  3. 分库分表。数据分散于多个分库。存在数据路由、数据一致性等问题。
  4. 由云服务商提供服务。
    MySQL架构原理之体系架构_第1张图片

MySQL体系结构

MySQL架构原理之体系架构_第2张图片
MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。

一、网络连接层

客户端连接器(Client Connectors):指能够与MySQL服务器建立连接的客户端。目前几乎支持所有主流的
服务端编程技术,例如常见的Jva、C、Python、.NET等,它们通过各自AP技术与MySQL建立连接。

二、服务层(MySQL Server)

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

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

三、存储引擎层(Pluggable Storage Engines)

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

四、系统文件层(File System)

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

日志文件

 show variables like '%log%';
  • 错误日志(Error log)。默认开启
  • 通用查询日志(General query log)。记录一般查询语句
  • 二进制日志(binary log)
    记录了对MySQL数据库执行的更改操作,并且记录了语句的发生时间、执行时长;但是它不记录select.
    show等不修改数据库的SQL。主要用于数据库恢复和主从复制。
  • 慢查询日志(Slow query log)
    记录所有执行时间超时的查询SQL,默认是10秒。

配置文件

用于存放MySQL所有的配置信息文件,比如my.cnf、my.ini等。

数据文件

MySQL架构原理之体系架构_第3张图片

你可能感兴趣的:(mysql,架构,数据库)