MYSQL入门学习之二十四:MySQL逻辑模块组成

        总的来说,MySQL 可以看成是二层架构:
        第一层SQL Layer:数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql 解析,执行计划优化,query cache 的处理等等;
        第二层Storage Engine Layer(存储引擎层):底层数据存取操作实现部分,由多种存储引擎共同组成。
        可以用如下一张最简单的架构示意图来表示MySQL 的基本架构:

        SQL Layer 中包含了多个子模块,下面为各模块的简单介绍:
1、初始化模块
        在MySQL Server 启动的时,对整个系统做各种各样的初始化操作,比如各种buffer,cache 结构的初始化和内存空间的申请,各种系统变量的初始化设定,各种存储引擎的初始化设置,等等。
2、核心API
        提供一些需要非常高效的底层操作功能的优化实现,包括各种底层数据结构的实现,特殊算法的实现,字符串处理,数字处理等,小文件I/O,格式化输出,以及最重要的内存管理部分。
3、网络交互模块
        底层网络交互模块抽象出底层网络交互所使用的接口api,实现底层网络数据的接收与发送,以方便其他各个模块调用,以及对这一部分的维护。
4、Client & Server 交互协议模块
        实现了客户端与MySQL 交互过程中的所有协议。如TCP/IP 以及Unix Socket。
5、用户模块
        主要包括用户的登录连接权限控制和用户的授权管理。
6、访问控制模块
        根据用户模块中各用户的授权信息,以及数据库自身特有的各种约束,来控制用户对数据的访问。用户模块和访问控制模块两者结合起来,组成了MySQL 整个数据库系统的权限安全管理的功能。
7、连接管理、连接线程和线程管理
        连接管理模块负责监听对MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。
        连接线程的主要工作就是负责MySQL Server 与客户端的通信,接受客户端的命令请求,传递Server 端的结果信息等。
        线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的cache 等。
8、Query 解析和转发模块
        将query 语句进行语义和语法的分析,然后按照不同的操作类型进行分类,然后做出针对性的转发。
9、Query Cache 模块
        将客户端提交给MySQL 的Select 类query 请求的返回结果集cache 到内存中,与该query 的一个hash 值做一个对应。该Query 所取数据的基表发生任何数据的变化之后,MySQL 会自动使该query 的Cache 失效。
10、Query 优化器模块
        根据客户端请求的query 语句,和数据库中的一些统计信息,在一系列算法的基础上进行分析,得出一个最优的策略,告诉后面的程序如何取得这个query 语句的结果。
11、表变更管理模块
        负责完成一些DML 和DDL 的query,如:update,delte,insert,create table,alter table 等语句的处理。
12、表维护模块
        负责表的状态检查,错误修复,以及优化和分析等工作。
13、系统状态管理模块
        系统状态管理模块负责在客户端请求系统状态的时候,将各种状态数据返回给用户,像DBA 常用的各种show status 命令,show variables 命令等,所得到的结果都是由这个模块返回的。
14、表管理器
        维护表的定义文件(.frm文件),以及一个cache,该cache 中的主要内容是各个表的结构信息。此外它还维护table 级别的锁管理。
15、日志记录模块
        负责整个系统级别的逻辑层的日志的记录,包括error log,binarylog,slow query log 等。
16、复制模块
        复制模块又可分为Master 模块和Slave 模块两部分。
        Master 模块主要负责在Replication 环境中读取Master 端的binary 日志,以及与Slave 端的I/O 线程交互等工作。
        Slave 模块一方面负责从Master 请求和接受binary 日志,并写入本地relay log 中的I/O 线程。另一个方面负责从relay log 中读取相关日志事件,然后解析成可以在Slave 端正确执行并得到和Master 端完全相同的结果的命令并再交给Slave 执行的SQL 线程。
17、存储引擎接口模块

        实现底层数据存储引擎的插件式管理。这个模块实际上只是一个抽象类,将各种数据处理高度抽象化。


参考:《MySQL性能调优与架构设计》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值