MySQL逻辑模块组成

来源:互联网 发布:数据库的作用是什么 编辑:程序博客网 时间:2024/06/04 19:54

    MySQL可以看成是两层架构,第一层SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断、Query解析、执行计划优化、query cache的处理等;第二层是存储引擎层,即底层数据存取操作实现部分,由多种存储引擎共同组成。

    本篇主要介绍SQL Layer层,即逻辑模块的组成。

1)初始化模块:对整个系统做各种各样的初始化操作

2)核心API:提供一些需要非常高效的底层操作功能的优化实现

3)网络交互模块:实现底层网络数据的接收与发送

4)Client&Server交互协议模块:实现了客户端与MySQL交互过程中的所有协议

5)用户模块:包括用户的登录连接权限控制和用户的授权管理

6)访问控制模块:根据用户模块中各用户的授权信息,以及数据库自身特有的各种约束,来控制用户对数据的访问

7)连接管理、连接线程和线程管理:

    a、连接管理:负责监听对MySQL Server的各种请求,接收连接请求,转发所有连接请求到线程管理模块

        注:每一个连接上MySQL Server的客户端请求都会被分配(或创建)一个连接线程为其单独服务

    b、连接线程:负责MysQL Server与客户端的通信,接受客户端的命令请求,传递Server端的结果信息等

    c、信息管理模块:负责管理维护这些连接线程,包括线程的创建,线程的缓存等

8)Query解析和转发模块:将Query语句进行语义和语法的分析,然后按照不同的操作类型进行分类,接着做出针对性的转发

9)Query Cache:将客户端提交给MySQL 的Select类Query请求的返回结果集缓存到内存中,与该Query的一个hash值做一个对应。在该Query所取数据的基表发生任何数据的变化之后,MySQL会自动使该Query的缓存失效

10)Query优化器模块:优化客户端请求的Query,根据客户端请求的Query语句和数据库中的一些统计信息,在一系列算法的基础上进行分析,得出一个最优的策略,告诉后面的程序如何取得这个Query语句的结果

11)表变更管理模块:负责完成一些DML和DDL的Query

12)表维护模块:表的状态检查,错误修复,以及优化和分析等工作

13)系统状态管理模块:在客户端请求系统状态的时候,将各种状态数据返回给用户

14)表管理器:维护“.frm”文件、一个cache(各个表的结构信息)、tabel级别的锁管理

15)日志记录模块:负责整个系统级别的逻辑层的日志的记录

16)复制模块:

    a、Master模块:负责在Replication环境中读取Master端的binary日志,以及与Slave端的I/O线程交互等工作

    b、Slave模块:一个是负责从Master请求和接受binary日志,并写入本地relay log中的I/O线程;另一个是负责从relay log中读取相关日志事件,然后将其解析成可以在Slave端正确执行并得到和Master端完全相同结果的命令,再交给Slave执行的SQL线程

17)存储引擎接口模块:实现其底层数据存储引擎的插件式管理。


0 0
原创粉丝点击