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