前言
數據庫在我們工作中是常用的工具,公司的重要業務信息大部分都會存儲在數據庫中。
因此,對於開發人員或運維人員來說,掌握數據庫基本原理是必要的技能。無論你使用的是何種數據庫,了解數據庫的體系架構是非常必要的。“知此知彼,方能百戰百勝”。
下面小編就帶你來了解MySQL的體系架構。
首先我們得明確MySQL的體系架構主要是數據庫和數據庫實例組成的,在了解MySQL的實質之前,先來了解以下的概念。
- MySQL是一種單進程多線程的數據庫,而數據庫實例則是以一個進程的方式在系統中體現出來的。
- 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的軟件體系架構和查詢工作原理,對於開發人員以及運維人員的我們很重要。了解了他們,就能為你的數據庫開發道路前進中,掃除很多障礙。