MySQL 高級 ———— MySQL邏輯架構圖簡介

引言

本篇文章介紹MySQL的邏輯架構圖。

MySQL並不完美,但足夠靈活,能夠適應高要求環境。MySQL不僅可以嵌入到應用程序中,同時也可以支持數據倉庫、內容搜索、和部署軟件、高可用的冗餘系統、在線事務處理系統等各種應用類型。

一、MySQL邏輯架構

MySQL最重要、最與衆不同的特性就是它的存儲引擎架構,這種架構將:查詢處理、其他系統任務、數據的存儲與提取 三部分分離。所以,帶來的好處就是可以在使用時根據性能、特性,以及其他需求來選擇數據存儲方式

存儲引擎架構分爲三層,自上而下,分爲第一層:連接層;第二層:服務層;第三層:引擎層

連接層:

MySQL的最上層是連接服務,引入了線程池的概念,允許多臺客戶端連接。主要工作是:連接處理、授權認證、安全防護等

連接層爲通過安全認證的接入用戶提供線程,同樣,在該層上可以實現基於SSL 的安全連接。

服務層:

服務層用於處理核心服務,如標準的SQL接口、查詢解析、SQL優化和統計、全局的和引擎依賴的緩存與緩衝器等等。所有的與存儲引擎無關的工作,如過程、函數等,都會在這一層來處理。在該層上,服務器會解析查詢並創建相應的內部解析樹,並對其完成優化,如確定查詢表的順序,是否利用索引等,最後生成相關的執行操作。如果是SELECT 語句,服務器還會查詢內部的緩存。如果緩存空間足夠大,這樣在解決大量讀操作的環境中能夠很好的提升系統的性能。

引擎層:

存儲引擎層,存儲引擎負責實際的MySQL數據的存儲與提取服務器通過API 與 存儲引擎進行通信。不同的存儲引擎功能和特性有所不同,這樣可以根據實際需要有針對性的使用不同的存儲引擎。

二、MySQL 工作流程

在這裏,我從數據庫架構的三個層面分別介紹數據庫的工作流程: 
最上層:客戶端連接 
  1、連接處理:客戶端同數據庫服務層建立TCP連接,連接管理模塊會建立連接,並請求一個連接線程。如果連接池中有空閒的連接線程,則分配給這個連接,如果沒有,在沒有超過最大連接數的情況下,創建新的連接線程負責這個客戶端。 
   
  2、授權認證:在真正的操作之前,還需要調用用戶模塊進行授權檢查,來驗證用戶是否有權限。通過後,方纔提供服務,連接線程開始接收並處理來自客戶端的SQL語句。

第二層:核心服務 
  1、連接線程接收到SQL語句之後,將語句交給SQL語句解析模塊進行語法分析和語義分析。

  2、如果是一個查詢語句,則可以先看查詢緩存中是否有結果,如果有結果可以直接返回給客戶端。

  3、如果查詢緩存中沒有結果,就需要真的查詢數據庫引擎層了,於是發給SQL優化器,進行查詢的優化。如果是表變更,則分別交給insert、update、delete、create、alter處理模塊進行處理。

第三層:數據庫引擎層 
  1、打開表,如果需要的話獲取相應的鎖。 
   
  2、先查詢緩存頁中有沒有相應的數據,如果有則可以直接返回,如果沒有就要從磁盤上去讀取。

  3、當在磁盤中找到相應的數據之後,則會加載到緩存中來,從而使得後面的查詢更加高效,由於內存有限,多采用變通的LRU表來管理緩存頁,保證緩存的都是經常訪問的數據。

最後,獲取數據後返回給客戶端,關閉連接,釋放連接線程。
 

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