亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是MySQL的整體架構

發布時間:2020-06-03 16:54:51 來源:PHP中文網 閱讀:343 作者:三月 欄目:MySQL數據庫

下文主要給大家帶來什么是MySQL的整體架構,希望這些內容能夠帶給大家實際用處,這也是我編輯什么是MySQL的整體架構這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。                                                           

整體架構圖

我們先看一下MySQL的架構圖,對其先有一個整體的了解。MySQL主要分為四層架構,分別是網絡連接層,服務層,存儲引擎層,物理層。我們平常寫的SQL語句,以及對SQL語句的優化都在服務層,他其實就是遵循一定的原則使得SQL語句能夠按我們的預期效果執行。

什么是MySQL的整體架構

各部分介紹

網絡連接層

主要負責連接管理,授權認證,安全等。每個客戶端連接都對應著云服務器上的一個線程。云服務器上維護一個線程池,避免為每個連接創建和銷毀線程。當客戶端連接到MySQL云服務器時,云服務器對其進行認證。可以通過用戶名與密碼認證,也可以通過SSL證書進行認證。登錄認證后,云服務器還會驗證客戶端是否有執行某個查詢的操作權限。這一層并不是MySQL所特有的技術。

服務層

該層是MySQL的核心,包括查詢緩存,解析器,解析樹,預處理器,查詢優化器。

什么是MySQL的整體架構

  • 查詢緩存

在正式查詢之前,云服務器會檢查查詢緩存,如果能找到對應的查詢,則不必進行查詢解析,優化,執行等過程,直接返回緩存中的結果集。

  • 解析器和預處理器

MySQL的解析器會根據查詢語句,構造出一個解析樹,主要用于根據語法規則來驗證語句是否正確,比如SQL的關鍵字是否正確,關鍵字的順序是否正確。

而預處理器主要是進一步校驗,比如表名,字段名是否正確等。

  • 查詢優化器

查詢優化器將解析樹轉化為查詢計劃,一般情況下,一條查詢可以有很多種執行方式,最終返回相同的結果,優化器就是找到這其中最優的執行計劃

  • 執行計劃

在完成解析和優化階段后,MySQL根據相應的執行計劃去調用存儲引擎層提供的相應接口來獲取結果。

存儲引擎層

負責MySQL數據的存儲和提取,是通過提供一系列的接口來屏蔽不同引擎之間的差異。

注意:存儲引擎是針對表的,而不是針對庫。也就是說同一個庫里面的不同表可以擁有不同的存儲引擎。

常見的存儲引擎有兩種,MyISAM和InnoDB,下面我們來看下他們的區別。

首先,我們先創建一個存儲引擎為MyISAM的test1表。

create table test1( a INTEGER, b varchar(10) )ENGINE=MyISAM;

我們可以去MySQL的相關目錄看一下他實際存儲的內容,發現他對應著三個文件。

什么是MySQL的整體架構

其次,我們再創建一個存儲引擎為InnoDB的test2表。

create table test2( a INTEGER, b varchar(10) )ENGINE=INNODB;

我們再去看一下他實際存儲的內容,發現他對應這一個文件。

什么是MySQL的整體架構

那么問題就來了,他的數據文件和索引文件存放在哪里啦。這邊先留個問題,下下篇"文件"再說。

物理層

將數據存放在硬盤上。

整體流程

我們發送一條SQL語句,其在MySQL中的整體流程究竟是什么樣的?

  • 用戶先通過Navicat等客戶端與服務端建立連接,這邊需要用戶名和密碼進行認證,也可以用SSL證書進行認證。

  • 登錄成功后,MySQL會根據相應權限來判斷該角色是否擁有一些表的權限等。

  • 如果擁有相關權限,當用戶發送一條查詢select語句時,MySQL先查詢緩存,如果已經有這條語句的緩存,則直接返回,如果沒有則執行下面的流程。如果是更新update,新增insert,刪除delete則不查詢緩存,直接執行下面的流程。

  • MySQL會將SQL語句解析為樹,然后對其進行校驗,比如關鍵字是否正確,關鍵字順序是否正確,表名是否正確,字段是否正確等。如果認證沒有成功,則直接返回錯誤。如果認證成功了,則直接下面流程。

  • MySQL對解析樹進行查詢優化,因為多個SQL可能表達的意思一樣,但是消耗的時間可能差別很大。所以MySQL對針對表的存儲引擎找到最優的語句執行,也就是生成相應的執行計劃。

  • 使用上面生成的執行計劃,來調用存儲引擎層的接口。也就是我們平時使用的explain,其可以用來查看是否走索引,消耗的時間等信息。

  • 不同的存儲引擎會到相應的物理存儲位置,找到相應的數據,封裝并返回結果。

  • 如果拿到了結果集,并且為select語句,MySQL會將結果放入到緩存中,避免下次再進行相同的操作而造成資源的消耗,同時返回給客戶端結果,至此,一條SQL語句的執行過程結束啦。

  • 對于以上關于什么是MySQL的整體架構,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临汾市| 天门市| 水富县| 昌邑市| 永修县| 东兴市| 吴忠市| 藁城市| 南木林县| 棋牌| 贞丰县| 阳新县| 墨玉县| 漳浦县| 芷江| 辉南县| 文登市| 桓仁| 湟源县| 淮阳县| 江安县| 商南县| 突泉县| 讷河市| 沭阳县| 辉县市| 睢宁县| 三明市| 大渡口区| 大竹县| 桓台县| 谷城县| 洛阳市| 运城市| 阜平县| 江陵县| 平定县| 吉首市| 包头市| 大新县| 民丰县|