MySQL的架構學習
總結:MySQL架構
1.Client Connectors:使用者端,指的是不同語言中與SQL的互動
2.Management Serveices&Utilities:系統管理和控制工具
3.Connection Pool:連線池
管理緩衝使用者連線,執行緒處理等需要快取的需求。
負責監聽對MySQL Server的各種請求,接受連線請求,轉發所有連線請求到執行緒管理模組,每一個連線上MySQL Server的客戶端請求都會被分配(或建立)一個連線執行緒為其單獨服務。而連線執行緒的主要工作就是負責MySQL Server與客戶端的通訊
接受客戶端的命令請求,傳遞Server端的結果資訊等。執行緒管理模快則負責管理維護這些連線執行緒。包括執行緒的建立,執行緒的cache等
4.SQL Interface:SQL介面
接受使用者的SQL指令,並且返回使用者需要查詢的結果。比如select from就是呼叫SQL Interface
5.Parser:解析器
SQL命令傳遞到解析器的時候會被解析器驗證和解析。解析器是由Lex和YACC實現的,是一個很長的指令碼。
在MySQL中我們習慣將所有的Client端傳送給Server端的命令都稱為query,在MySQL Server裡面,連線執行緒接收到客戶端的一個Query之後,會直接將該Query傳遞給專門負責將各種Query進行分類然後轉發給各個對應的處理模組
主要功能:
- 將sql語句進行予以和語法的分析,分解成資料結構,然後按照不同的操作型別進行分類,然後做出針對性的轉發到後續步驟,以後sql語句的傳遞和處理就是基於這個結構的。
- 如果在分解過程中遇到錯誤,那麼就說明這個sql語句是不合理的
6.Optimizer:查詢優化器
Sql語句在查詢之前會使用查詢優化器對查詢進行優化,就是優化客戶端請求的query,根據query和資料庫中的一些統計資訊,在一系列演算法的基礎上進行分析,得出一個最優策略,告訴後面的程式如何得到這個程式的結果。
使用的是:“選取-投影-聯接”
這個查詢先根據where語句進行選取,而不是現將表全查詢出來之後再進行gender過濾;
先根據name進行屬性投影,而不是將屬性全部取出來之後再進行過濾;將這兩個查詢條件聯接起來生成最終查詢結果。
7.Cache和Buffer:查詢快取
它的主要功能是將客戶端提交給MySQL的Select類的語句請求的返回結果集cache(緩衝儲存)到記憶體中,與該語句的一個hash值做一個對應。
該語句所取資料的基表發生任何資料的變化之後,MySQL會自動使該語句的cache失效。在讀寫比例非常高的應用系統中,Query Cache對效能的提高是非常顯著的,當然它對記憶體的消耗也是非常大的。
如果查詢快取中有命中的查詢結果,查詢語句就可以直接去查詢快取中取資料。這個快取機制是由一系列小快取組成的,比如表快取,記錄快取,key快取,許可權快取等。
8.pluggable storage engine:外掛式儲存引擎
是MySQL中最有特色的一點,目前資料庫中,基本上只有MySQL可以實現其底層資料儲存引擎的外掛式管理。這個模組實際上只是一個抽象類,但正是因為它成功的將各種資料處理高度抽象化,才成就了今天MySQL可插拔儲存引擎的特點。儲存引擎是基於表的,而不是資料庫。
9.file system ntfs
ntfs:是windowsNT環境的檔案系統
ext4:是linux上常用的檔案系統,相當於windows上的ntfs
san:儲存區域網絡
nas:網路接入儲存