MySQL 源码分析——代码结构与基本流程彭立勋 Alibaba DBA Team Topics ? MySQL 基本架构?源码目录结构?核心类库与函数?主要模块?数据流 MySQL 基本架构 MySQL 目录结构(1) ? BUILD : 内含在各个平台、各种编译器下进行编译的脚本。pile-pentium-debug 表示在 pentium 架构上进行调试编译的脚本。?c lient : 客户端工具,如 mysql,mysqladmin 之类。?c md-line-utils : readline,libedit 工具。? config : 给aclocal 使用的配置文件。? dbug : 提供一些调试用的宏定义。? Docs : MySQL 在不同平台下的参考手册? extra : 提供 innochecksum ,resolveip 等额外的小工具。? include : 包含的头文件? libmysql : 库文件,生产 。? libmysql_r : 线程安全的库文件,生成 。? libmysqld : 嵌入式 MySQL Server 库. ? libservices : 中新加的目录,实现了打印功能。 MySQL 目录结构(2) ?m an : 适合 man 命令查看的帮助文件。? mysql-test : mysqld 的测试工具套件。? mysys : 为实现跨平台, MySQL 自己实现了一套常用的数据结构和算法, 如string, hash 等。还包含一些底层函数的跨平台封装,一般以 my_ 开头。? netware : 在netware 平台上进行编译时需要的工具和库。? plugin : MySQL 开始支持一个插件式 API 接口,不需要重启 mysqld 即可动态载入插件,FullText 就是一个例子。? pstack : GNU 异步栈追踪工具。? regex : 正则表达式实现(来自多伦多大学 Henry Spencer 大牛的源码)。? scripts : 提供脚本工具,如 mysql_install_db/mysqld_safe 等。?server-tools: 包含 instance_manager 子目录,负责实例的本地和远程管理。 MySQL 目录结构(3) ? sql: MySQL Server 主要代码,将会生成 mysqld 文件。? sql-bench: 一些基准测试代码代码,主要是 Perl 程序(虽然后缀是 sh) 。? mon: 存放部分服务器端和客户端都会用到的代码,有些地方的同名文件是这里 lin过去的。?s torage : 存储引擎所在目录。?s trings : string 库,包含很多字符串处理的函数。?s upport-files : f 示例配置文件及编译所需的一些工具。? tests : 测试文件所在目录。? unittest : 单元测试文件。? vio : 虚拟 io系统,work io 的封装,把不同的协议封装成统一的IO函数。? win : 在windows 平台编译所需的文件和一些说明。? zlib : zlib 算法库(GNU) InnoDB 目录结构(1) ? btr: B+ 树的实现?b uf: 缓冲池的实现,包括 LRU 算法,Flush 刷新算法等? dict : InnoDB 内存数据字典的实现? dyn : InnoDB 动态数组的实现? fil: InnoDB 文件数据结构以及对于文件的一些操作? fsp : 对InnoDB 物理文件的管理,如页/区/段等(即File Space) ? ha : 哈希算法的实现? handler : 继承与 MySQL 的handler, 实现 handler API 与Server 交互? ibuf : 插入缓冲(Insert Buffer) 的实现? include : InnoDB 所有头文件都放在这个目录,是查找结构定义的最佳地点? lock : InnoDB 的锁实现及三种锁算法实现? log: 日志缓冲(Log Buffer) 和重做日志组(Redo Log) 的实现 InnoDB 目录结构(2) ? mem: 辅助缓冲池(Additional M emory P ool) 的实现,用来申请一些内部数据结构的内存? mtr : 事务的底层实现(日志,缓冲) ? os : 封装一些对于操作系统的操作? page : 页的实现,研究 InnoDB 文件结构,这个目录至关重要? pars : 重载部分 MySQL 的SQL Parser( 有待商榷) ? que : Quer
MySQL源码解说 来自淘豆网m.daumloan.com转载请标明出处.