二、核心API(源代碼在mysys 和strings目錄如下)
提供一些需要很高效的底層操做功能的優化實現,包含各類底層數據結構的實現,特殊算法的實現,字符串處理。數字處理等。小文件I/O。格式化輸出,以及最重要的內存管理部分。算法
三、網絡交互模塊(源代碼在vio目錄如下)
底層網絡交互模塊抽象出底層網絡交互所使用的接口api。實現底層網絡數據的接收與發送,以方便其它各個模塊調用,以及對這一部分的維護。
四、Client & Server 交互協議模塊
不論什麼C/S 結構的軟件系統。都確定會有本身獨有的信息交互協議。MySQL 也不例外。MySQL的Client & Server 交互協議模塊部分,實現了client與MySQL 交互過程當中的所有協議。sql
固然這些協議都是創建在現有的OS 和網絡協議之上的。如TCP/IP 以及Unix Socket。數據庫
五、用戶模塊
用戶模塊所實現的功能。主要包含用戶的登陸鏈接權限控制和用戶的受權管理。
六、訪問控制模塊
訪問控制模塊實現的功能就是依據用戶模塊中各用戶的受權信息,以及數據庫自身特有的各類約束。來控制用戶對數據的訪問。用戶模塊和訪問控制模塊二者結合起來,組成了MySQL 整個數據庫系統的權限安全管理的功能。
七、鏈接管理、鏈接線程和線程管理
鏈接管理模塊負責監聽對MySQL Server 的各類請求,接收鏈接請求,轉發所有鏈接請求到線程管理模塊。api
每一個鏈接上MySQL Server 的client請求都會被分配(或建立)一個鏈接線程爲其單獨服務。而鏈接線程的主要工做就是負責MySQL Server 與client的通訊。接受client的命令請求,傳遞Server 端的結果信息等。線程管理模塊則負責管理維護這些鏈接線程。包含線程的建立。線程的cache 等。
八、Query 解析和轉發模塊
其主要工做就是將query 語句進行語義和語法的分析,而後依照不一樣的操做類型進行分
注意:咱們習慣將所有Client 端發送給Server 端的命令都稱爲query
九、Query Cache 模塊
將client提交給MySQL 的Select 類query 請求的返回結果集cache 到內存中,與該query 的一個hash 值作一個相應。該Query 所取數據的基表發生不論什麼數據的變化以後,MySQL 會本身主動使該query 的Cache 失效。在讀寫比例很高的應用系統中。Query Cache 對性能的提升是很顯著的。安全
固然它對內存的消耗也是很大的。
十、Query 優化器模塊
優化client請求的query。依據client請求的query 語句,和數據庫中的一些統計信息,在一系列算法的基礎上進行分析。得出一個最優的策略,告訴後面的程序怎樣取得這個query 語句的結果。網絡
十一、表變動管理模塊
表變動管理模塊主要是負責完畢一些DML 和DDL 的query,如:update,delte。insert,create table,alter table 等語句的處理。
十二、表維護模塊
表的狀態檢查,錯誤修復,以及優化和分析等工做都是表維護模塊需要作的事情。數據結構
1三、系統狀態管理模塊
系統狀態管理模塊負責在client請求系統狀態的時候。將各類狀態數據返回給用戶,像DBA 常用的各類show status 命令。show variables 命令等。所獲得的結果都是由這個模塊返回的。
1四、表管理器
表管理器的工做主要就是維護*.frm文件,以及一個cache,該cache 中的主要內容是各個表的結構信息。此外它還維護table 級別的鎖管理。
1五、日誌記錄模塊
日誌記錄模塊主要負責整個系統級別的邏輯層的日誌的記錄。包含error log,binary log,slow query log 等。
1六、複製模塊
複製模塊又可分爲Master 模塊和Slave 模塊兩部分:
Master 模塊主要負責在Replication 環境中讀取Master 端的binary 日誌。以及與Slave 端的I/O 線程交互等工做。
Slave 模塊比Master 模塊所要作的事情稍多一些,在系統中主要體現在兩個線程上面:
一個是負責從Master 請求和接受binary 日誌。並寫入本地relay log 中的I/O 線程。架構
一個是負責從relay log 中讀取相關日誌事件,而後解析成可以在Slave 端正確運行並獲得和Master 端全然一樣的結果的命令並再交給Slave 運行的SQL 線程。
1七、存儲引擎接口模塊
實現其底層數據存儲引擎的插件式管理。post
它成功地將各類數據處理高度抽象化。造成MySQL可插拔存儲引擎的特點。性能