3分鍾帶你玩轉MySQL體系結構和查詢原理!


前言

數據庫在我們工作中是常用的工具,公司的重要業務信息大部分都會存儲在數據庫中。

因此,對於開發人員或運維人員來說,掌握數據庫基本原理是必要的技能。無論你使用的是何種數據庫,了解數據庫的體系架構是非常必要的。“知此知彼,方能百戰百勝”。

下面小編就帶你來了解MySQL的體系架構

首先我們得明確MySQL的體系架構主要是數據庫數據庫實例組成的,在了解MySQL的實質之前,先來了解以下的概念。

  1. MySQL是一種單進程多線程的數據庫,而數據庫實例則是以一個進程的方式在系統中體現出來的。
  2. MySQL的文件格式有 ibd、MYI、MYD、frm 等結尾的格式文件。

一、MySQL架構示意圖

從上圖中我們可以發現,整個MySQL框架由兩部分組成,

1、 上層是MySQLD,又被叫做“SQL的圖層”,里面包含有 查詢解析、分析、優化、緩存以及系統自定義的函數(比如,時間、三角函數、加密函數等),主要能實現的功能有:視圖、觸發器、存儲過程等

2、 下層是為上層提供接口的各式各樣的存儲引擎,又被稱之為“存儲引擎圖層”。存儲引擎包含有很多底層存儲引擎諸如 InnoDB、MyISAM、Memory…….,它們被用於像“根據主鍵查詢一行記錄”等等方法。但存儲引擎不會去解析SQL,各個存儲引擎直接不會發生互相通信,他們就僅僅的響應上層服務器端的請求

二、查詢工作原理示意圖

1、 客戶端首先向服務器發送一條查詢語句。

2、 服務器接收到查詢語句之后,做兩件事情

  • 一是,檢查查詢語句是否完全匹配
  • 二是,然后再檢查該條語句是否具有權限

3、 當這兩個條件都滿足的時候,即開始索引緩存,緩存中存在的話則直接返回結果,如果不存在的話,則進入下一個環節,即步驟4。

4、 先進行預處理階段,解析SQL語句,生成新的解析樹,接着再交給對應的模塊處理,根據優化器優化,然后生成對應的執行計划。

5、 優化器的執行計划就是,調用存儲引擎中的API執行計划表,當有數據變化的時候,打開日志功能,就會記錄在相應的二進制日志文件中。

6、 設置緩存,請求完成之后,將結果返回給連接進/線程模塊,然后到客戶端,並決定是等待請求還是與客戶端連接斷開。

結論

以上就是MySQL的軟件體系架構和查詢工作原理,對於開發人員以及運維人員的我們很重要。了解了他們,就能為你的數據庫開發道路前進中,掃除很多障礙。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM