中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

MySQL架構設計實例分析

發布時間:2022-08-05 10:54:40 來源:億速云 閱讀:178 作者:iii 欄目:開發技術

這篇文章主要介紹了MySQL架構設計實例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MySQL架構設計實例分析文章都會有所收獲,下面我們一起來看看吧。

1. MySQL整體架構

由圖中可以看到MySQL架構主要分為Server層存儲引擎層

Server層又分為連接器、緩存、分析器、優化器、執行器。所有跨存儲引擎的功能都在這層實現,比如:函數、存儲過程、觸發器、視圖等。

存儲引擎是可插拔式的,常見的存儲引擎有MyISAM、InnoDB、Memory等,MySQL5.5之前默認的是MyISAM,之后默認的是InnoDB。

MySQL架構設計實例分析

2. 連接器

連接器主要用來管理客戶端的連接和用戶身份認證。

客戶端與Server端的連接采用的是TCP協議,經過TCP握手,建立連接之后,連接器開始進行身份驗證。

> mysql -hlocalhost -P3306 -uroot -p

如果認證失敗,就會出現錯誤 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

可以通過 show processlist 命令查看系統所有連接的信息:

MySQL架構設計實例分析

其中Commond列表示連接狀態,Daemon表示后臺進程,Query表示查詢,Sleep表示空閑連接。

3. 查詢緩存

客戶端請求不會直接去存儲引擎查詢數據,而是先在緩存中查詢結果是否存在。如果結果已存在,直接返回,否則再執行一遍查詢流程,查詢結束后把結果再緩存起來。

如果數據表發生更改,將清空失效緩存,例如 insert、update、delete、alter操作等。

對于頻繁變更的數據表來說,緩存命中率很低。使用緩存反而降低了讀寫性能,所以在MySQL8.0以后就移除了緩存模塊。

可以通過下面命令查看是否開啟了緩存:

MySQL架構設計實例分析

4. 分析器

分析器主要對SQL語句進行詞法分析語法分析

首先進行詞法分析,分析出MySQL的關鍵字、以及每個詞語代表的含義。然后進行語法分析,檢測SQL語句是否符合MySQL語法要求。

MySQL通過識別字符串中列名、表名、where、select/update/insert 等MySQL關鍵字,在根據語法規則判斷sql是否滿足語法,最終會生成一個抽象語法樹(AST)。

比如:SQL語句中少寫個where關鍵字,就會提示錯誤。

mysql> select * from user id=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1' at line 1

5. 優化器

在真正執行SQL語句之前,還需要經過優化器處理。

我們熟知的執行計劃(Explain)就是優化器生成的。

優化器主要有兩個作用:邏輯優化物理優化

邏輯優化主要進行等價謂詞重寫、條件化簡、子查詢消除、連接消除、語義優化、分組合并、選擇下推、索引優化查詢、表查詢替換視圖查詢、Union替換or操作等。

物理優化主要作用是通過貪婪算法,根據代價估算模型,估算出每種執行方式的代價。并使用索引優化表連接,最終生成查詢執行計劃。

附上MySQL優化器架構圖,可以清晰的看到優化過程:

MySQL架構設計實例分析

6. 執行器

在優化器優化完SQL,并生成了執行計劃后,就會把執行計劃傳遞給執行器。

執行器調用存儲引擎接口,真正的執行SQL查詢。獲取到存儲引擎返回的查詢結果,并把結果返回給客戶端,至此SQL語句執行結束。

關于“MySQL架構設計實例分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“MySQL架構設計實例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

新丰县| 岑巩县| 舟山市| 正宁县| 普洱| 同仁县| 衡阳县| 镇赉县| 大新县| 龙游县| 玉田县| 涪陵区| 南京市| 汕尾市| 黄山市| 西安市| 舒兰市| 新郑市| 马公市| 乌兰浩特市| 都匀市| 新营市| 开化县| 西丰县| 铁力市| 荣成市| 海丰县| 福清市| 建宁县| 武乡县| 搜索| 鄯善县| 五家渠市| 梁平县| 枣阳市| 乌兰察布市| 黎城县| 阳春市| 肃宁县| 北流市| 朝阳区|