MySQL 5.7 源码中的目录结构

MySQl Server的源码可以直接去Github浏览。
这里我们选择5.7版本的:https://github.com/mysql/mysql-server/tree/5.7
也可以通过:

git clone https://github.com/mysql/mysql-server.git

下载下来。

源码根目录中主要目录和文件的作用:

  • BUILD:里面包含各个平台,各个编译器下进行编译的脚本;
  • CMakeLists.txt:CMake入口编译文件;
  • client:客户端工具,所有客户端工具都在这里,比如mysql,mysqlbinlog,mysqladmin,mysqldump等;
  • cmake:为CMake编译服务的,这里定义了很多在CMake编译时使用的方法或变量;
  • cmd-line-utils:一些小工具;
  • config.h.cmake:用于生成编译时配置头文件的.cmake文件;
  • dbug:提供一些调试用的宏定义,可以很好地跟踪数据库执行到的执行函数、运行栈桢等信息,可以定位一些问题;
  • extra:包含了用来做网络消息认证的SSL包,并提供了comp_err、resolveip等小工具;
  • include:MySQL代码包含的所有头文件,这里不包括存储引擎的头文件;
  • libbinlogevents:MySQL 5.7 引擎开始新增的、用于解析Binlog的lib服务;
  • libmysql:用来创建嵌入式系统的MySQL客户端API;
  • libmysqld:MySQL服务器的核心级API文件,也用来开发嵌入式系统;
  • mysql-test:mysqld的测试工具;
  • mysys:MySQL自己实现的一些常用的数据结构和算法,比如array,list和hash,以及一些区分不同底层操作系统平台的函数封装,比如my_file,my_fopen等函数,这一类型的函数都以my开头;
  • mysys_ssl:MySQL中SSL相关的服务;
  • plugin:包括一些系统内置的插件,比如auth,password_validation等,同时包含了可动态载入的插件,比如fulltext,semisync等;
  • regex:一些关于正则表达式的算法实现;
  • scripts:包含一些系统工具脚本,比如mysql_install_db,mysqld_safe及mysqld_multi等;
  • sql:MySQL服务器主要代码,这里包含了main函数(main.cc),将会生成mysqld可执行文件;
  • sql-common:存放部分服务器端和客户端都会用到的代码;
  • storage:所有存储引擎的源代码都在这个目录中,文件夹名一般就是其存储引擎的名称,包括innobase,myisam,blackhole,ndb及perfschema等;
  • strings:包含很多字符串处理的函数,比如strmov,strappend及my_atof等函数;
  • support-files:my.cnf示例配置文件及编译所需的一些工具;
  • unittest:单元测试文件目录;
  • vio:虚拟网络IO处理系统,是对不同平台或不同协议的网络通信API的封装;
  • win:在windows平台编译所需的文件和一些说明;
  • zlib:zlib压缩算法库;
  • zifeiy:大晚上的我讲一个笑话给你听,就是没有zifeiy这个文件夹,我多加了一行逗大家乐一下然后就去睡觉了,晚安~
posted @ 2018-10-22 23:20  zifeiy  阅读(1667)  评论(0编辑  收藏  举报