您好,登錄后才能下訂單哦!
這篇文章主要介紹了MySQL源代碼目錄有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
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 |
感謝你能夠認真閱讀完這篇文章,希望小編分享的“MySQL源代碼目錄有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。