mysql之mysql組件和工作原理

mysql組成:

    連接管理器
        負責監聽在某個端口套接字上,並接受用戶請求。

    線程管理器:
        負責給用戶的請求生成新的線程,在請求完成後負責銷燬進程或完成進程的重用。

    用戶模塊:
        驗證用戶是否有權限連接服務器。驗證用戶的身份。

    命令分發模塊:
        根據查詢的不同類型,和緩存模塊交互,和日誌模塊交互。若緩存中沒有則交給解析器處理,需要記錄日誌的交給日誌模塊。

    解析器:
        解析查詢的法和詞法,再次查詢緩存,沒有則生成解析樹。若是SELECT則交給查詢優化器。若是UPDATE、DELETE、INSERT、CREATE等則交給表定義模塊,REPARE交給表維護模塊。

    緩存管理器:
        負責管理緩存。
        置換策略:使用置換策略來保證有效的內存空間。
        一般採用最近最少思路,即最近一段時間按內最少使用的塊被置換出去。
        某些不想置換的塊可以設定爲被釘住的塊。

    日誌管理器:
        記錄日誌。

    查詢優化器:
        對解析樹進行優化,優化爲在服務器上執行開銷最小,速度最高的執行模式。

    表定義模塊(表修改模塊):
        檢查用戶跟表操作相關數據的完整性和權限。
        負責表的創建、刪除、重命名、移除、更新、插入等操作。

    表維護模塊:
        用來修復表的邏輯錯誤等。檢查用戶權限。
        負責表的檢查、修改、備份、恢復、優化(碎片整理)、解析。

    狀態報告模塊:
        更新操作執行狀態報告信息。

    複製模塊:
        負責數據同步等。

    訪問控制模塊:
        檢查用戶是否有完成對應操作的權限。

    表管理器:
        負責和存儲引擎接口交互,根據表定義模塊的操作,將表定義轉換爲文件。負責創建、修改讀取表定義文件。

        表定義文件用來儲存表結構。

        維護表描述符高速緩存:
            通常會把表定義和名稱緩存在內存中,表在讀取之後,表的格式也會緩存在內存中。

        管理表鎖。
            一個用戶修改表內容時其他用戶不能操作。

        和表定義模塊和表維護模塊協同操作。

    存儲引擎:
        插件式的。負責表示層和物理層的雙向轉換。
        和磁盤上的數據進行交互。

mysql工作流程。

    用戶請求-->連接管理器(負責接收)-->線程管理器(生成線程)--> 用戶模塊(驗證身份,通過則建立連接,爲通過則拒絕)--> 連接已建立。

    用戶發送查詢語句-->命令分發模塊(查詢緩存,記錄日誌。緩存中沒有則分發命令)-->解析器(解析語句,查詢緩存,生成解析樹)--> 查詢優化器 |表定義模塊|表維護模塊|狀態報告模塊|複製模塊 -->訪問控制模塊(驗證用戶權限)--> 表管理器 (表結構操作,表鎖管理,緩存管理)--> 存儲引擎 (文件操作)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章