1. 程式人生 > >MySQL 5.7 源碼中的目錄結構

MySQL 5.7 源碼中的目錄結構

ibm conf cmake scrip tree 配置 main.c ext client

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這個文件夾,我多加了一行逗大家樂一下然後就去睡覺了,晚安~

MySQL 5.7 源碼中的目錄結構