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这个文件夹,我多加了一行逗大家乐一下然后就去睡觉了,晚安~
来源:oschina
链接:https://my.oschina.net/u/4255280/blog/3781650