您的位置:首页 > 数据库 > SQL

读书笔记:MySQL服务器架构核心模块构成

2017-10-23 01:14 183 查看
     MySQL服务器架构模块指在逻辑上以某种方式结合在一起的一段代码,并且能在服务器中完成某种特定的功能。到MySQL5.1,其源码可以抽象为以下模块,彼此交互和传递控制权。



服务器初始化模块(Server Initialization Module)
     负责在服务器启动时完成初始化工作,包括解析配置文件和命令行参数、分配全局存储缓冲区、初始化全局变量和结构、加载访问控制表以及其他大量初始化任务。其入口为C/C++程序主函数main()。

连接管理器(Connection Manager)
     侦听来自客户端的连接,然后将请求派发给线程管理器。

线程管理器(Thread Manager)
     处理来自客户端的连接,分配、跟踪线程。

连接线程(Connection Thread)
     由线程管理器创建,或者从线程缓存中提取并调用。连接线程是处理客户端请求的工作核心。

用户验证模块(User Authentication Module)
     验证连接用户的证书,初始化用户权限。

访问控制模块(Access Control Module)
     检验客户端是否有权限执行所请求的操作。

解析器(Parser)
     解析查询,生成解析树。

命令调度器(Command Dispatcher)
     负责将请求分配给相关能够处理这些请求的较低层次的模块。

查询缓存模块(Query Cache Module)

     缓存查询结果,查询缓存命中时提交缓存结果然后结束查询请求的执行。

优化器(Optimizer)
     MySQL源码中最复杂的模块。生成执行查询的最佳策略,执行查询计划,向客户端返回结果。

表管理器(Table Manager)
     创建、读取和修改表定义文件(.frm文件),维护被称为表缓存的表描述符,管理表级锁。

表修改模块(Table Modification Module)
     MySQL源码中非常重要的代码。负责包括创建、删除、重命名表以及表记录的插入、删除、更新等操作。即DDL和DML接口。

表维护模块(Table Maintenance Module)
     负责表维护操作,包括检查、修理、备份、恢复、优化(碎片整理)以及分析(更新索引基数)。

状态报告模块(Status Reporting Module)
     处理以SHOW命令开始的查询,返回关于服务器配置设置、性能监控变量、表结构信息、复制进程、表缓存状态等查询的结果。

抽象存储引擎接口(表处理器)(Abstracted Storage Engine Interface(Table Handler))
     执行低层次存储与检索操作的标准化接口。

特定存储引擎接口(Storage Engine Implementations)
     抽象存储引擎接口的扩展,每个存储引擎(InnoDB、MyISAM、MEMORY等)根据自身的设计定义低层次调用接口。

日志记录模块(Logging Module)
     维护高层次(逻辑)日志,即服务器的二进制日志、查询日志和慢查询日志。不包括存储引擎级别自定义的日志。

主复制服务器模块(Replication Master Module)
     负责master上的复制功能,主要是向slave发送复制日志事件。

从复制服务器模块(Replication Slave Module)
     负责slave上的复制功能,主要是接收master上的更新然后应用到slave上。

客户端/服务器协议API(Client/Server Protocol API)
     MySQL服务器创建、读取、解释和发送协议包API。

低层次网络I/O API(Low-Level Network I/O API)
     抽象低层次网络I/O和SSL。

核心API(Core API)
     MySQL核心组件。包括文件I/O、内存管理、字符串操作、文件系统索引、格式化打印、丰富的数据结构和算法集等。

内容整理自:

《Understanding MySQL Internals》(https://book.douban.com/subject/1924288/

《深入理解MySQL核心技术》(https://book.douban.com/subject/4022870/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: