更新時間:2021-01-04 17:54:40 來源:動力節點 瀏覽1661次
由于MySQL的組件眾多,很難在有限的篇幅解釋清楚所有的MySQL組件,所以這里我們就只討論一些相對而言比較重要的MySQL核心組件。
一、Service層
1.客戶端連接器:也稱之為mysql應用層。主要負責:
連接處理:當客戶端請求上來mysql會從線程池分配一個線程來與客戶端連接,如果連接處于空閑狀態, wait_timeout參數決定斷開時間;
-用戶鑒權:是通過用戶名,客戶端地址,密碼的方式來鑒權用戶;
-安全管理:mysql通過連接的權限來控制連接可以執行哪些操作;
-查詢緩存:之前執行過的語句與結果是以K-V方式保存在查詢緩存中,查詢請求如果命中-直接返回,查詢結束。查詢緩存失效非常頻繁, 只要對一張表進行更新,那么它所對應的的查詢緩存都會被清空。query_cache_type參數來設置是否使用查詢緩存,8.0以后的版本直接廢棄查詢緩存。
2.分析器/解析器:如果沒有命中查詢緩存,將會進入分析器。先開始做詞法分析解析出表名,函數,關鍵字等,然后開始校驗語法分析,校驗語法的正確性,我們常看到的:You have an error in your SQL syntax...的錯誤提示就是從這里返回的。一般語法錯誤會提示第一個出現錯誤的位置,依次類推。
3.優化器:經過分析器,SQL有多張表關聯或者有多個索引的時候,優化器是根據索引來決定表的順序與條件順序。你寫的SQL語句沒有強行設置執行順序的話,可能不是你想要的條件執行順序,后面我會專門來說優化器對索引的選擇算法。
4.執行器:經過優化的SQL重寫以后,執行器會先判斷線程有沒有數據的讀寫權限,如果有將打開表繼續執行。執行器會根據不同存儲引擎接口來調用api實現,根據索引規則來對表進行掃描,返回結果。如果表或者列不存在就會看到:Table doesn't exist,Unknown column where clause這樣的提示。
二、MySql管理系統(MySQL Management Server & utilities)
MySql管理系統提供了豐富的數據庫管理功能,例如:數據庫備份和恢復,數據庫安全管理與權限管理,數據庫復制管理,集群管理,數據庫元數據管理,分庫分別管理等。
存儲引擎:一種管理物理數據和位置的插件類組件,負責執行sql語句并從磁盤文件中獲取數據。
磁盤文件:包括redolog、undolog、binlog、errorlog、querylog、slowlog、data、index等。
三、核心子系統:
1.基本函數庫子系統:在所有mysql子系統之間共享的一組通用函數。
2.進程,線程和資源管理子系統:基于線程資源的管理服務器體系結構。
3.緩存和緩沖區管理子系統:提高查詢速度,減少IO次數的檢索方式。私有會話級別與實例共享級別。
4.網絡連接與通信管理系統:維護這全部的會話連接與通信。
5.日志管理子系統:管理所有的mysql日志,數據日志,操作日志,慢查詢日志,訪問日志等。
6.數據和存儲管理子系統:管理數據文件與存儲方式,存儲格式,存儲位置。
總的來說,一個數據庫的核心都是大同小異的,只要我們掌握了MySQL核心組件,對于我們學習其他數據庫也是有很大幫助的。在本站的MySQL教程中,對于MySQL的一些次要的組件也有很詳細的介紹,對于我們了解和使用MySQL數據庫有很大的幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習