MySQL 執行原理

2021-08-15 01:28:04 字數 1226 閱讀 7848

1.mysql基礎

mysql是乙個開放源**的關聯式資料庫管理系統。原開發者為瑞典的mysql ab公司,最早是在2023年mysql3.23進入到管理員的視野並在之後獲得廣泛的應用。 2023年mysql公司被sun公司收購並發布了首個收購之後的版本mysql5.1,該版本引入分割槽、基於行複製以及plugin api。移除了原有的berkeydb引擎,同時,oracle收購innodb oy發布了innodb plugin,這後來發展成為著名的innodb引擎。2023年oracle收購sun公司,這也使得mysql歸入oracle門下,之後oracle發布了收購以後的首個版本5.5,該版本主要改善集中在效能、擴充套件性、複製、分割槽以及對windows的支援。目前版本已發展到5.7。

和其它資料庫相比,mysql有點與眾不同,它的架構可以在多種不同場景中應用並發揮良好作用。主要體現在儲存引擎的架構上,外掛程式式的儲存引擎架構將查詢處理和其它的系統任務以及資料的儲存提取相分離。這種架構可以根據業務的需求和實際需要選擇合適的儲存引擎。

注意:儲存引擎是基於表的,而不是資料庫。

2.mysql邏輯架構

(1) 連線層

最上層是一些客戶端和連線服務,包含本地sock通訊和大多數基於客戶端/服務端工具實現的類似於tcp/ip的通訊。主要完成一些類似於連線處理、授權認證、及相關的安全方案。在該層上引入了執行緒池的概念,為通過認證安全接入的客戶端提供執行緒。同樣在該層上可以實現基於ssl的安全鏈結。伺服器也會為安全接入的每個客戶端驗證它所具有的操作許可權。

(2) 服務層

第二層架構主要完成大多少的核心服務功能,如sql介面,並完成快取的查詢,

sql的分析和優化及部分內建函式的執行。所有跨儲存引擎的功能也在這一層實現,如過程、函式等。在該層,伺服器會解析查詢並建立相應的內部解析樹,並對其完成相應的優化如確定查詢表的順序,是否利用索引等,最後生成相應的執行操作。如果是select語句,伺服器還會查詢內部的快取。如果快取空間足夠大,這樣在解決大量讀操作的環境中能夠很好的提公升系統的效能。

(3) 引擎層

儲存引擎層,儲存引擎真正的負責了mysql中資料的儲存和提取,伺服器通過api與儲存引擎進行通訊。不同的儲存引擎具有的功能不同,這樣我們可以根據自己的實際需要進行選取。後面介紹myisam和innodb

(4) 儲存層

資料儲存層,主要是將資料儲存在執行於裸裝置的檔案系統之上,並完成與儲存引擎的互動。

mysql執行原理 mysql 執行原理

闡述mysql系統的各個模組是如何相親相愛的完成乙個我們認為的很簡單的查詢工作的。我們對啟動mysql,客戶端建立連線,請求query,得到返回結果,最終退出。這樣一整個過程來進行分析。第一步 當我們執行啟動mysql系統的命令之後,mysql的初始化模組就從系統配置檔案中讀取系統引數和命令列引數,...

MySQL的執行原理

mysql分為服務端和客戶端,mysql客戶端和服務端都代表乙個計算機程序,擁有唯一的程序pid,mysql伺服器的程序也被稱為資料庫例項 mysql伺服器在啟動的時候會預設監聽3306埠,採用tcp作為服務端與客戶端之間的通訊協議。mysql完成客戶端與服務端的連線管理以及查詢語句的解析與優化後,...

mysql 事務 執行原理 概述

以前沒有深究過資料庫底層是怎麼運作的,只是停留在了概念層次,但是後來發現寫程式的時候不是很舒服,總感覺有些點不通,於是決定看看mysql innodb引擎的原理,這裡只是乙個大致的介紹,不會太深入。如果我們在mysql的客戶端執行了一些個操作,我們不了解任何底層,最簡單的概念模型就是認為資料庫的表裡...