mysql架構設計
下面是一張mysql的架構圖:
上方各個元件的含義如下:
connectors
指的是不同語言中與sql的互動
management serveices & utilities:
系統管理和控制工具
connection pool:連線池
管理緩衝使用者連線,執行緒處理等需要快取的需求。
負責監聽對 mysql server 的各種請求,接收連線請求,**所有連線請求到執行緒管理模組。每乙個連線上 mysql server
的客戶端請求都會被分配(或建立)乙個連線線程為其單獨服務。而連線線程的主要工作就是負責 mysql server 與客戶端的通訊,
接受客戶端的命令請求,傳遞 server 端的結果資訊等。執行緒管理模組則負責管理維護這些連線線程。包括執行緒的建立,執行緒的 cache 等
sql inte***ce:sql介面
接受使用者的sql命令,並且返回使用者需要查詢的結果。比如select from就是呼叫sql inte***ce
parser:命令解析器
sql命令傳遞到解析器的時候會被解析器驗證和解析。解析器是由lex和yacc實現的,是乙個很長的指令碼。
在 mysql中我們習慣將所有 client 端傳送給 server 端的命令都稱為 query ,在 mysql server
裡面,連線線程接收到客戶端的乙個 query 後,會直接將該 query 傳遞給專門負責將各種 query
進行分類然後**給各個對應的處理模組。
主要功能:
a . 將sql語句進行語義和語法的分析,分解成資料結構,然後按照不同的操作型別進行分類,然後做出針對性的**到後續步驟,以後sql語句的傳遞和處理就是基於這個結構的。
b. 如果在分解構成中遇到錯誤,那麼就說明這個sql語句是不合理的
optimizer: 查詢優化器
sql語句在查詢之前會使用查詢優化器對查詢進行優化。就是優化客戶端請求的 query(sql語句) ,根據客戶端請求的 query
語句,和資料庫中的一些統計資訊,在一系列演算法的基礎上進行分析,得出乙個最優的策略,告訴後面的程式如何取得這個 query 語句的結果
他使用的是「選取-投影-聯接」策略進行查詢。
用乙個例子就可以理解:
1
select uid,name fromuser where gender = 1;這個select 查詢先根據where 語句進行選取,而不是先將表全部查詢出來以後再進行gender過濾
這個select查詢先根據uid和name進行屬性投影,而不是將屬性全部取出以後再進行過濾
將這兩個查詢條件聯接起來生成最終查詢結果
cache和buffer: 查詢快取。
他的主要功能是將客戶端提交 給mysql 的 select 類 query 請求的返回結果集 cache 到記憶體中,與該 query 的乙個 hash 值 做
乙個對應。該 query 所取資料的基表發生任何資料的變化之後, mysql 會自動使該 query 的cache 失效。在讀寫比例非常高的應用系統中, query cache 對效能的提高是非常顯著的。當然它對記憶體的消耗也是非常大的
如果查詢快取有命中的查詢結果,查詢語句就可以直接去查詢快取中取資料。這個快取機制是由一系列小快取組成的。比如表快取,記錄快取,key快取,許可權快取等
儲存引擎介面
儲存引擎介面模組可以說是 mysql 資料庫中最有特色的一點了。目前各種資料庫產品中,基本上只有 mysql
可以實現其底層資料儲存引擎的外掛程式式管理。這個模組實際上只是 乙個抽象類,但正是因為它成功地將各種資料處理高度抽象化,才成就了今天 mysql
可插拔儲存引擎的特色。
注意:儲存引擎是基於表的,而不是資料庫。
sql語句執行流程
連線處理
結果
MySQL架構與執行流程(一)
總體上,我們可以把mysql分為三層,跟客戶端對接的連線層,真正執行操作的服務層,跟硬體打交道的儲存引擎層。客戶端要連線到mysql伺服器3306埠,必須要跟服務端建立連線,那麼管理所有的連線,驗證客戶端的身份和許可權,這些功能都在連線層完成。主要包括聯結器 查詢快取 分析器 優化器 執行器等,所有...
01 MySQL架構與執行流程
一 聯結器 在完成經典的 tcp 握手後,聯結器就要開始認證你的身份,這個時候用的就是你輸入的使用者名稱和密碼。如果使用者名稱密碼認證通過,聯結器會到許可權表裡面查出你擁有的許可權。之後,這個連線裡面的許可權判斷邏輯,都將依賴於此時讀到的許可權。這就意味著,乙個使用者成功建立連線後,即使你用管理員賬...
Spark架構與執行流程
1.闡述hadoop生態系統中,hdfs,mapreduce,yarn,hbase及spark的相互關係。2.spark已打造出結構一體化 功能多樣化的大資料生態系統,請簡述spark生態系統。3.用 描述你所理解的spark執行架構,執行流程。4.軟體平台準備 linux hadoop。1.had...