Mysql雜志(十四)——Mysql邏輯架構

Mysql邏輯架構

這個圖相信大家并不陌生,這個就是mysql的邏輯結構圖下面是主包讓AI生成的翻譯后的邏輯結構圖:

我們先來看看各個部分的作用是什么

第一層:客戶端連接層 (Client Layer)

這一層負責處理所有客戶端連接到服務器的請求。責任就是:

  • 身份認證:驗證用戶名、密碼、主機權限等。
  • 安全管理:檢查用戶是否有執行某個操作的權限。
  • 連接管理:管理連接的線程(如線程緩存thread_cache_size),處理SHOW PROCESSLIST等命令。
  • 如果連接校驗通過,服務器會為該連接分配一個線程,后續該客戶端的請求均在這個線程中進行。

這一層的內容還是很好理解的就是我們熟知的連接池。

第二層:核心服務層 (Server Layer / SQL Layer)

這是MySQL的“大腦”,負責處理SQL語句的解析、優化和執行。?這一層是跨存儲引擎的,意味著不管底層用什么存儲引擎,SQL語句都會在這里經過相同的處理流程。

1.SQL接口 (SQL Interface)??

?職責?就是接收客戶端發送的SQL命令(如DML、DDL、存儲過程、視圖等),并返回處理結果,相當于一個指揮官,接收命令并決定下一步交給誰處理。

2.解析器 (Parser)??

?職責?就是對SQL語句進行詞法分析和語法分析。將完整的SQL語句拆分成一個個的單詞(SELECT*FROMt)。根據語法規則,判斷SQL語句是否合法,最終生成一個解析樹?(或語法樹)。比如它會檢查你是否把WHERE寫成了WHER

3.優化器 (Optimizer)??

?這是最復雜的組件之一,它的任務是對解析器生成的解析樹進行優化。如使用哪個索引或全表掃描?多表關聯順序?:(A JOIN B) JOIN C還是 A JOIN (B JOIN C)子查詢優化?:將某些子查詢轉化為更高效的JOIN操作。最終產生一個它認為成本最低(cost-based)的執行計劃。你可以使用EXPLAIN命令來查看優化器生成的執行計劃。

4.查詢緩存 (Query Cache) (MySQL 8.0中已移除)??

在8.0之前的版本,如果查詢語句和數據完全一致,會直接從緩存返回結果。但由于其嚴重的瓶頸問題(任何表有更新,該表的所有查詢緩存都會失效),在MySQL 8.0中這個功能被徹底移除了。

5.緩存和緩沖 (Caches & Buffers)??

這里指的是各種全局的緩存,如表緩存權限緩存等。InnoDB存儲引擎自己的緩沖池(Buffer Pool)不屬于這一層,而是屬于存儲引擎層。

6.系統管理和控制工具(System Management & Control Tools)

是MySQL服務器的全局管理員和大腦,負責制定規則、監控全局狀態、進行后臺維護。作用如下:

1.?制定全局規則與策略?:定義整個MySQL實例的安全策略,即所有用戶的權限信息最終存儲在 mysql.usermysql.db等系統表中。設置全局系統變量(如 max_connections最大連接數、innodb_buffer_pool_size緩沖池大小)。

2.資源調度與全局監控?:監控整個服務器的健康狀態(CPU、內存、IO使用情況)。管理全局性的資源,如緩存(查詢緩存、表緩存)、線程池的整體狀態。記錄全局性的日志,如錯誤日志(Error Log)、慢查詢日志(Slow Query Log)、二進制日志(Binlog)。這些日志記錄的是所有連接的行為。

3.后臺維護與自治?:執行定期任務,如刷新緩存、更新統計信息、日志輪轉(Log Rotation)。負責表的自動修復、崩潰恢復等。

而連接池就是調用了系統管理工具和控制工具進行鑒權等一系列操作。

第三層:存儲引擎層 (Storage Engine Layer)

存儲引擎負責數據的存儲和提取。MySQL的核心服務層通過定義好的API與存儲引擎進行交互。?這種設計使得存儲引擎是“可插拔”的,你可以根據需要為不同的表選擇不同的存儲引擎。

這個就是最好sql執行到存儲引擎,然后存儲引擎再通過API去訪問文件系統,最最后再把結果放回。

下面這個是主包從其他博主拿過來的圖,對于邏輯架構的文章要比主包寫的好很多https://www.cnblogs.com/binliubiao/p/15230069.html大家可以去仔細看看,內容還是很多的。

總結

這一篇主要講的就邏輯架構,但是這一篇主包承認比較水,很多都是Ai生成的,因為主包認為這一篇的內容不是很難(皮毛的話)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96427.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96427.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96427.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git 版本回退與撤銷修改

作為版本控制管理器,Git應當具備版本回退等一系列功能——它的應用場景也很常見,當你在工作區開發時,忽然發現:怎么我這版本寫的代碼還不如上一版本好?這時,版本回退功能就派上用場了。一.版本回退1.概覽首…

學習日記-JS+DOM-day54-9.12

1.javascript基本說明知識點核心內容重點JavaScript基礎控制HTML內容與屬性,實現動態行為(如開燈/關燈效果)src屬性路徑修正(./與../的區別)前端三要素HTML(內容)、CSS(樣式&#xf…

使用tree命令導出文件夾/文件的目錄樹( Windows 和 macOS)

你可以在終端(命令提示符)中使用 tree 命令來清晰直觀地查看和導出文件夾的目錄結構。下面我會詳細告訴你如何在 Windows 和 macOS 上使用它。 🖥? tree 命令基本用法 tree 命令的核心作用是以樹狀圖的形式展示指定路徑下的目錄和文件結構。…

GrapeCity Documents V8.0 Update2 重磅發布:性能飛躍、AI 賦能與文檔處理全流程升級

作為葡萄城旗下服務端文檔組件庫,GrapeCity Documents(簡稱"GcDocs")憑借跨平臺、高兼容的優勢,已成為 眾多開發者構建文檔生成、編輯、轉換與管理系統的首選。 近日,GcDocs 迎來 V8.0 Update2 版本更新&am…

水質在線監測系統御控物聯網解決方案

一、行業背景與需求痛點水質安全是飲用水供應、工業生產、生態保護的核心要素。隨著《水污染防治行動計劃》的深入實施,傳統水質監測方式面臨三大挑戰:時效性不足:人工采樣-實驗室分析周期長達24-72小時,難以實時捕捉污染事件&…

【完整源碼+數據集+部署教程】倉庫物品分類檢測圖像分割系統源碼和數據集:改進yolo11-convnextv2

背景意義 研究背景與意義 隨著現代物流和倉儲管理的快速發展,物品分類與檢測技術在提高倉庫運營效率、降低人工成本方面發揮著越來越重要的作用。傳統的物品管理方式往往依賴人工識別和分類,效率低下且容易出錯。為了解決這一問題,基于計算機…

瀏覽器穩定性提升之路:線上崩潰率優化中的 Return 與 CHECK 之爭

一、前言在大型 C 工程(例如 Chrome 瀏覽器內核)中,開發者經常會遇到這樣的選擇: 到底應該在關鍵點使用 CHECK 直接崩潰,還是使用 return、LOG 記錄錯誤然后繼續執行?這看似只是一個代碼風格問題&#xff0…

【數據結構與算法Trip第3站】雙指針

我們來詳細講解一下算法中非常常用且重要的技巧——雙指針法。 這是一個概念清晰但應用極其廣泛的技術,掌握它能幫助你高效解決許多問題。 一、什么是雙指針法? 核心思想:顧名思義,就是在遍歷對象(通常是數組或鏈表&am…

時序數據庫選型指南:基于大數據視角的IoTDB應用優勢分析詳解!

目錄 一、時序數據庫選型的基本原則 1.1 數據特征與需求分析 1.1.1 數據規模與寫入負載 1.1.2 查詢需求 1.1.3 數據保留與歸檔策略 1.1.4 系統擴展性與高可用性 1.2 技術架構與系統性能評估 1.2.1 寫入性能 1.2.2 查詢性能 1.2.3 數據壓縮能力 1.2.4 高可用性與災備…

緩存三大劫攻防戰:穿透、擊穿、雪崩的Java實戰防御體系(三)

第三部分:緩存雪崩——大量key失效引發的“系統性崩潰” 緩存雪崩的本質是“大量緩存key在同一時間失效,或緩存集群整體故障”,導致請求全量穿透至DB,引發“系統性崩潰”。 案例4:電商首頁的“批量過期”災難 故障現場…

解決docker配置了鏡像源但還會拉取官方鏡像源的問題

🏓我們有時候雖然配置了Docker國內鏡像源,但是還是會繞過去請求官方鏡像源(docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded),現在我們就來解決一…

R語言水文、水環境模型優化:從最速上升法、嶺分析到貝葉斯優化與異方差處理,涵蓋采樣設計、代理模型與快速率定等

在水利工程、環境治理、生態保護、機械設計與航天航空等現代工業與科學領域,數學模型已成為不可或缺的核心分析、預測與決策工具。然而,隨著系統復雜性的日益增長,模型構建的精確性、參數率定的效率以及不確定性量化的重要性被提到了前所未有…

關于數據采集與處理心得(一)

目前所實踐的經驗告知我!1. 別企圖妄想一個腳本解決所有問題要學會對問題分解,編寫多個腳本一步步將問題解決,如果每一個步驟都為了下一個階段的成果打地基,也是非常OK的。同時要盡可能將每一個編寫的腳本都盡到最大的利用率2. 編…

IvorySQL 適配 LoongArch? 龍架構

IvorySQL 社區很高興向您宣布,IvorySQL 已成功適配LoongArch 龍架構,為國產數據庫與國產芯片的深度融合邁出了堅實一步。這一里程碑標志著 IvorySQL 在推動國產化生態建設、賦能信創產業方面取得了重大突破,為用戶提供更高效、穩定、安全的數…

數據庫分庫分表是考慮ShardingSphere 還是Mycat?

http://www.mycat.org.cn/ https://shardingsphere.apache.org/ 這是一個非常核心且優秀的問題。在選擇 ShardingSphere 和 Mycat 之間,對于游戲這種高性能、高復雜度的場景,目前行業內的主流選擇和發展趨勢毫無疑問是 ShardingSphere。 我會為你詳細對…

mysql分庫分表數據量核查問題

場景: 使用分庫分表的業務有時分庫數量幾百甚至上千,當主管需要查詢每個庫中的數據,掌握數據分布情況。要你查看哪些庫中的表數量大于某個量級的給找出來 ,你會怎么做。 例子 : mysql庫數量:db_xx_devicein…

python之socket網絡編程

引言 在互聯網時代,網絡編程已經成為開發人員必備的技能之一。無論是Web開發、實時通信還是分布式計算,都離不開網絡編程的支持。Python提供的socket模塊為我們提供了簡潔而強大的接口,可以輕松實現客戶端和服務器之間的通信。 Socket編程是網…

WPF Telerik.Windows.Controls.Data.PropertyGrid 自定義屬性編輯器

1.AI幫忙定義新用戶控件 2.在屬性上添加TelerikEditorAttribute特性 private ObservableCollection<string> _axisOrder;[Display(Description "點位", GroupName "通用", Name "軸&順序", Order 1)][DataMember][TelerikEditorAt…

【超詳細】別再看零散的教程了!一篇搞定Gitee從注冊、配置到代碼上傳與管理(內含避坑指南最佳實踐)

&#x1f525;個人主頁&#xff1a;艾莉絲努力練劍 ?專欄傳送門&#xff1a;《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題、洛谷刷題、C/C基礎知識知識強化補充、C/C干貨分享&學習過程記錄 &#x1f349;學習方向&#xff1a;C/C方向學習者…

43.shell腳本循環與函數

shell腳本循環與函數 for 循環 for 循環用于一次性讀取多個信息&#xff0c;逐一對信息進行操作處理&#xff0c;特別適合處理有范圍的數據 語法 for 變量名 in 取值列表 do命令序列 done批量創建用戶 #!/bin/bashtouch /root/users.txt echo aka blues cloe dio foks > /ro…