MySQL体系架构,超详细

2022-10-11 22:12:40 160 0
魁首哥

首先我们来看看 Mysql 超详细的架构图解,更好的进行分析学习:

MySQL 架构自顶向下大致分为网络连接层,服务层,存储层和系统文件层。

网络连接层

  • 客户端连接器:值能够与MySQL服务器建立连接的客户端。目前几乎支持所有主流的服务端编程技术,例如常见的 java ,C,Python,PHP等,它们通过各自API技术与MySQL建立连接。

服务层

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

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

存储引擎层

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

系统文件层

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

  • 日志文件

a.错误日志(Error log)

默认开启,show variables like ‘%log_error%’;

b.通用查询日志(General query log)

记录一般查询语句 show variables like ‘%general%’;

c.二进制日志(binary log)

记录了对mysql数据执行的更改操作,并且记录了语句的发生时间,执行时长等;但是不记录select,show等查询语句。主要用于数据库恢复和主从复制。

命令:show VARIABLES like ‘%log_bin%’; 查看bin log 是否开启

show VARIABLES like ‘%binlog%’; 参数查看

show BINARY logs; 查看日志信息

d. 慢查询 日志 slow query log

记录所有执行时间超时的查询SQL,默认是10秒,可以根据公司业务修改相关参数

命令:show VARIABLES like ‘%slow_query%’; //查看慢查询是否开启

show VARIABLES like ‘%long_query_time%’; //慢查询超时时长

  • 配置文件

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

  • 数据文件

a.db.opt 文件:记录这个库的默认使用的 字符集 和校验规则

b.frm文件:存储与表相关的元数据信息,包括表结构的定义信息等,每一张表都会有一个frm文件

c.MYD文件:MyISAM存储引擎专用,存放MyISAM 表的索引相关信息,没一张MyISAM表对应一个.MYI文件

d.ibd文件和IBDATA文件:存放InnoDB的数据文件(包括索引)。InnoDB存储引擎有两种表空间方式:独享表空间和共享表空间。独享表空间使用.idb文件来存放树,且每一张InnoDB表对应一个.ibd文件。共享表空间使用.ibdata文件

e.ibdata1文件:系统表空间文件,Undo日志等

f.ib_logfile1,ib_logfile1 文件:Redo log 文件

  • pid文件

pid文件是mysqId应用程序在 Linux 环境下的进程文件,和许多其他的Linux 服务端程序一样,它存放着自己的进程id

收藏
分享
海报
0 条评论
160
上一篇:php下如何简单快捷的实现邮件发送 下一篇:大白话讲解php多态应用实例

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码