MySQL 5.7 源碼中的目錄結構
阿新 • • 發佈:2018-10-23
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 源碼中的目錄結構