天天看點

mysql的核心類和重要的源碼檔案

sql/sql_select.cc :包含着一些優化函數和一些資料檢索算法的具體實作

 ITEM_類

 ITEM_類是mysql的每一個子系統都要用到的東西。之是以稱之為ITEM_類,是因為從ITEM基類派生出許多子類甚至孫類。這些派生類被用來存儲和處理mysql系統裡的許多種資料,其中包括:參數、辨別符

時間、字段、函數、數值、字元串等。ITEM基類定義在/sql/item.h源代碼檔案裡,實作在/sql/item.cc源代碼裡。

LEX結構

 LEX結構是SQL指令在mysql系統内部的表示形式。SQL指令的各組成部分---字段、表、表達式等全都井井有條地存儲在LEX結構裡。定義在/sql/lex.h檔案裡

NET結構

 NET結構儲存着mysql伺服器與用戶端進行通信所需要的所有資訊。buff成員變量用來存放原始的通信資料包(sql指令就儲存在這些資料包裡)。兩個重要函數

 my_net_write()函數,把資料包從NET結構寫到網絡協定

 my_net_read()函數,把資料包從網絡協定讀入NET結構

從/include/mysql_com.h檔案裡找到全套網絡通信函數

 THD類

 這個類的定義在/sql/sql_class.h源檔案裡,實作在/sql/sql_class.cc源代碼裡。是一個重要的類,線程類是線程執行成功的最大關鍵,在mysql伺服器裡,幾乎每一個子系統或函數都要用到THD類。

繼續閱讀