1、源代碼目錄介紹:
1、BUILD
BUILD目錄是編譯、安裝腳本目錄,絕大部分以compile-開頭,其中的SETUP.sh腳本為C和C++編譯器設置了優化選項。
2、client
client目錄包括常用命令和客戶端工具代碼,這些源代碼文件中包括密碼確認功能get_password.c、SSL連接可行性檢查、MySQL客戶端mysql.cc、mysqladmin工具和mysqladmin用於服務器的運作mysqladmin.c、顯示數據庫及其表和列的mysqlshow.c等。
3、storage
MySQL的各類存儲引擎代碼都在該目錄中,包括CVS存儲引擎(cvs目錄)、InnoDB存儲引擎、Federate等。存儲引擎是數據庫系統的核心,封裝了數據庫文件的操作,是數據庫系統是否強大最重要的因素。Mysql實現了一個抽象接口層,叫做 handler(sql/handler.h),其中定義了接口函數,比如:ha_open, ha_index_end, ha_create等等,存儲引擎需要實現這些接口才能被系統使用。這個接口定義超級復雜,有900多行 :-(,不過我們暫時知道它是干什么的就好了,沒必要深究每行代碼。對於具體每種引擎的特點,我推薦大家去看mysql的在線文檔: http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html
應該能看到如下的目錄:
* innobase, innodb的目錄,當前最流行的存儲引擎
* myisam, 最早的Mysql存儲引擎,一直到innodb出現以前,使用最廣的引擎
* heap, 基於內存的存儲引擎
* federated, 一個比較新的存儲引擎
* example, csv,這幾個大家可以作為自己寫存儲引擎時的參考實現,比較容易讀懂
4、mysys
mysys代表MySQL system library,是MySQL的庫函數文件。庫函數是一些預先編譯好的函數的集合,這些函數都是按照可再使用的原則編寫的。它們通常由一組互相關聯的用來完成某項常見的工作的函數構成,從本質上來說庫是一種可執行的二進制形式,可以被操作系統載入內存執行。在mysys目錄中,共有125個.c文件,且隨着版本的演化和新功能的加入,庫函數也在不斷的增大。
其中包括用於快速排序的mf_qsort.c、用於臨時文件管理的mf_tempfile.c、定義在客戶端編譯時采用字符集類型的charset-def.c、字符集相關操作(字符集加載、初始化等)的charset.c。
mysys是一個大雜燴,包含了各種各樣的功能庫文件,包括文件打開、數據讀寫、內存分配、OS/2系統特別優化、線程控制、權限控制、RaidTable、動態字符串處理、隊列算法、網絡傳輸協議、初始化函數、錯誤處理、平衡二叉樹算法、符號連接處理、唯一臨時文件名生成、hash函數、排序算法、壓縮傳輸協議等。
5、sql
sql目錄出了包含mysqld.cc這一MySQL main函數(沒錯,這里就是數據庫主程序mysqld所在的地方,大部分的系統流程都發生在這里。)所在的文件外,還包括了各類SQL語句的解析/實現、線程、查詢解析與查詢優化器、存儲引擎接口(你還能看到sql_insert.cc, sql_update.cc, sql_select.cc,等等,分別實現了對應的SQL命令。后面我們還要經常提到這個目錄下的文件)。在storage下各存儲引擎目錄中,存在的是各類存儲引擎的實現代碼,而在sql/目錄下存放的是處理接口handler。handler類中存在很多虛函數,需要其子類進行實現
如今在MySQL 5.1中,綜合文件hadler.cc和handler.h處理了所有不同種類存儲請求。各種SQL語句的執行代碼也可以在sql目錄中找到,這類文件常以sql開始對文件命名。MySQL將UNION和ROLLUP等操作看作內部函數。
大概有如下及部分:
SQL解析器代碼: sql_lex.cc, sql_yacc.yy, sql_yacc.cc, sql_parse.cc等,實現了對SQL語句的解析操作。
"handler"代碼: handle.cc, handler.h,定義了存儲引擎的接口。
"item"代碼:item_func.cc, item_create.cc,定義了SQL解析后的各個部分。
SQL語句執行代碼: sql_update.cc, sql_insert.cc sql_select.cc, sql_show.cc, sql_load.cc,執行SQL對應的語句。當你要看"SELECT ..."的執行的時候,直接到sql_select.cc去看就OK了。
輔助代碼: net_serv.cc實現網絡操作
還有其他很多代碼。
6、vio
VIO意指Virtual I/O,主要用來處理各種網絡協議的IO。Virtual I/O使得各種模塊的網絡協議能夠無縫的調用I/O功能。MySQL網絡子系統將調用這里的方法。
7、regex
regex為MySQL提供執行正則匹配函數REGEXP時的支持。
8、dbug
使用with-debug參數編譯的MySQL會顯示dbug輸出,代碼中的所有.c和.cc文件均可調用這個庫。
2、安裝目錄介紹:
On Windows, the default installation directory is C:\mysql, which has the following subdirectories:
Directory |
Contents of Directory |
---|---|
bin |
Client programs and the mysqld server |
data |
Log files, databases |
Docs |
Documentation |
examples |
Example programs and scripts |
include |
Include (header) files |
lib |
Libraries |
scripts |
Utility scripts |
share |
Error message files |
Installations created from Linux RPM distributions result in files under the following system directories:
Directory |
Contents of Directory |
---|---|
/usr/bin |
Client programs and scripts |
/usr/sbin |
The mysqld server |
/var/lib/mysql |
Log files, databases |
/usr/share/doc/packages |
Documentation |
include/usr/include/mysql |
Include (header) files |
lib/usr/lib/mysql |
Libraries |
/usr/share/mysql |
Error message and character set files |
sql-bench/usr/share/sql-bench |
Benchmarks |
On Unix, a tar file binary distribution is installed by unpacking it at the installation location you choose (typically/usr/local/mysql) and creates the following directories in that location:
Directory |
Contents of Directory |
---|---|
bin |
Client programs and the mysqld server |
data |
Log files, databases |
docs |
Documentation, ChangeLog |
include |
Include (header) files |
lib |
Libraries |
scripts |
mysql_install_db |
share/mysql |
Error message files |
sql-bench |
Benchmarks |
A source distribution is installed after you configure and compile it. By default, the installation step installs files under /usr/local, in the following subdirectories:
Directory |
Contents of Directory |
---|---|
bin |
Client programs and scripts |
include/mysql |
Include (header) files |
info |
Documentation in Info format |
lib/mysql |
Libraries |
libexec |
The mysqld server |
share/mysql |
Error message files |
sql-bench |
Benchmarks and crash-me test |
var |
Databases and log files |
轉:http://blog.csdn.net/cymm_liu/article/details/45822637