Mysql架構理論部分

Mysql架構是什么?實際可以理解為執行一條sql語句所要經歷的階段有哪些!

1.連接層

(1)客戶端發起連接
? ?客戶端通過TCP/IP、Unix Socket或命名管道等方式向Mysql服務器發起鏈接請求

?想要了解tcp與udp的區別,可以參考這篇文章
https://blog.csdn.net/ymb615ymb/article/details/123449588?ops_request_misc=%257B%2522request%255Fid%2522%253A%252293c621ab4e488bbc0967bd9f87bd4418%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=93c621ab4e488bbc0967bd9f87bd4418&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123449588-null-null.142^v102^pc_search_result_base7&utm_term=tcp%E4%B8%8Eudp%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

(2)服務端接受鏈接

? 當mysql服務器接收到客戶端發來的請求后,服務器會建立一個線程或者連接句柄來處理客戶端? ? ? 的請求

? 大致來講,如果把mysql服務器當做一個進程的話,那么與每個客戶端建立的鏈接則可以當做一個線程

(3)身份驗證
? 連接層會驗證客戶端提供的用戶名和密碼
? 驗證通過后,連接層會檢查客戶端是否有權限訪問指定的數據庫
? 如果驗證失敗,連接層會拒絕鏈接并返回錯誤信息

(4)處理客戶端請求
? 客戶端發送sql查詢或者其他請求
? 連接層將請求傳遞給查詢解釋器和優化器(解釋器和優化器在后面會講到)進行處理
? 查詢執行完成后,連接層將結果返回給客戶端

?(5)關閉鏈接

2.緩存層

?緩存層是mysql中比較雞肋的部分....


?與其他應用中的緩存器一樣,mysql緩存層目的是為了減少數據庫負載(即多次查詢相同的數據庫內容),提高反應速度


? 但是mysql是通過sql語句來記錄是否執行緩存層的,什么意思?


?如我想查詢學生表中的所有信息,理論上?? select * from students 與 ?select * from ? ? ? ? students查詢的結果是一樣的,但是兩個語句之間空格數量一樣,緩存層就會認為這是不同的語句,無法發揮緩存的作用


? 所以mysql5.6/5.7版本中存在緩存層,但是默認是關閉的,而mysql.8.0則是直接去掉了緩存部分,用相應的業務層來做緩存

3.解釋層

(1)解析sql語句
? ? ? ? 解析sql語句會用到解析器組件(如第三方解析器組件Druid)
? ? ? ? 解析sql語句步驟:
? ? ? ? 客戶端將sql語句傳到mysql服務器->解析該sql語句 詞法和語法解析(關鍵字、條件、判斷表和字段是否存在)->生成解析樹

? ? ??

?(2)交給優化層


4.優化層


? ? 要想從北京去往上海是有多條路徑的但是哪個是最優路徑呢,那就得交給優化層了

1)對于整個sql進行優化 優化器會對sql的條件進行調整 生成各種執行計劃
?(2)對sql進行具體優化 去掉沒必要的條件 EXPLAIN SELECT * FROM USER WHERE 1=1; SELECT*FROM USER;
?? (3)優化器會選擇合適的索引 但優化器不是萬能的并不能全部優化成功 需要人工干預 慢查詢就是例子

?


5.執行器與存儲引擎

? 存儲引擎在MySQL的邏輯架構中位于第三層,負責MySQL中的數據的存儲和提取。MySQL存儲引擎有很多,不同的存儲引擎保存數據和索引的方式是不同的。每一種存儲引擎都有它的優勢和劣勢。
可以使用 show engines; 命令來查看當前數據庫所支持的所有的存儲引擎。


?

舉例:
有的時候可能需要查詢速度快,不需要持久化,基于內存的操作,那么可以使用memory引擎。
有的數據是歷史數據,基本上不會新增及其查詢,提供壓縮的功能就可以使用archive引擎。
有的時候需要非常多的 讀寫,并發,數據一致性的操作,可以使用innodb引擎

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

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

相關文章

架構師面試(十九):IM 架構

問題 IM 系統從架構模式上包括 【介紹人模式】和 【代理人模式】。介紹人模式也叫直連模式,消息收發不需要服務端的參與,即客戶端之間直連的方式;代理人模式也叫中轉模式,消息收發需要服務端進行中轉。 下面關于這兩類模式描述的…

【服務器】RAID0、RAID1、RAID5、RAID6、RAID10異同與應用

目錄 ?編輯 一、RAID概述 1.1 磁盤陣列簡介 1.2 功能 二、RAID級別 2.1 RAID 0(不含校驗與冗余的條帶存儲) 2.2 RAID1(不含校驗的鏡像存儲) 2.3 RAID 5 (數據塊級別的分布式校驗條帶存儲) 4、RAI…

MySQL身份驗證的auth_socket插件

在Ubuntu 20.04 LTS上,MySQL 8.0默認使用auth_socket插件進行身份驗證,可能存在意想不到的情況。 一、auth_socket插件 在使用sudo mysql或通過sudo切換用戶后執行任何MySQL命令時,不需要輸入密碼或錯誤密碼都可以正常登入mysql數據庫&…

小程序開發中的用戶反饋收集與分析

我們在開發小程序的過程中根據開發過程中的代碼及業務場景,以下是針對需求管理系統的用戶反饋收集與分析方案設計: 需求管理系統用戶反饋收集與分析方案 一、反饋數據模型設計 // 新增Feedback模型(app/admin/model/Feedback.php) namespace app\admin\model; use think\…

python關鍵字匯總

文章目錄 1. 變量與類型相關2. 控制流相關3. 函數與類相關4. 異常處理相關5. 模塊相關6. 其他 在 Python 3 里有 35 個關鍵字,它們各自具備特定的用途與意義 1. 變量與類型相關 True、False 意義:布爾類型的常量,分別代表邏輯真與邏輯假。示…

使用Python在Word中創建、讀取和刪除列表 - 詳解

目錄 工具與設置 Python在Word中創建列表 使用默認樣式創建有序(編號)列表 使用默認樣式創建無序(項目符號)列表 創建多級列表 使用自定義樣式創建列表 Python讀取Word中的列表 Python從Word中刪除列表 在Word中&#xff…

軟考-軟件設計師-計算機網絡

一、七層模型 中繼器:信號會隨著距離的增加而逐漸衰減,中繼器可以接受一端的信息再將其原封不動的發給另一端,起到延長傳輸距離的作用; 集線器:多端口的中繼器,所有端口公用一個沖突域; 網橋&…

關于Flask框架30道面試題及解析

文章目錄 基礎概念1. 什么是Flask?其核心特性是什么?2. Flask和Django的主要區別?3. 解釋Flask中的“路由”概念。如何定義動態路由?核心組件4. Flask的請求上下文(Request Context)和應用上下文(Application Context)有什么區別?5. 如何訪問請求參數?POST和GET方法的…

C++20 中 `constexpr` 的強大擴展:算法、工具與復數庫的變革

文章目錄 一、constexpr 在 <algorithm> 中的應用1. 編譯時排序2. 編譯時查找 二、constexpr 在 <utility> 中的應用1. 編譯時交換2. 編譯時條件交換 三、constexpr 在 <complex> 中的應用1. 編譯時復數運算 四、總結 C20 對 constexpr 的增強是其最引人注目…

【ELK】節省存儲 之 壓縮存儲方式調整

目錄 集群版本&#xff1a; 7.17.6 解釋幾個概念&#xff1a; 段&#xff08;Segment&#xff09; 合并(Merge) 索引設置&#xff1a; 壓縮方式(index.codec)&#xff1a; 測試設置前提條件 對比 在創建的時候指定壓縮類型&#xff08;index.codec&#xff09; 對比 在…

conda create之后,以前的conda env list 只能看到環境路徑 沒有環境名稱了

1.命令 conda env list 看到的顯示如下&#xff1a; 左邊這列的"base"&#xff0c;指向的路徑和其它環境變量安裝的路徑不一致。 這時需要通過"activate [anaconda的環境路徑]"和"source activate"回到anaconda&#xff1a; 2.執行切換命令 …

夸克網盤任務腳本——進階自動版

腳本是用于自動管理和更新夸克云盤(Quark Cloud Drive)上的文件和目錄的Python腳本。其主要功能包括自動下載、更新、重命名、刪除文件和文件夾,以及處理和發送通知,可以在特定的時間間隔內運行,根據配置文件進行操作。 主要功能 1. Quark 類: __init__:初始化類,設置…

AsyncHttpClient使用說明書

[[toc]] AsyncHttpClient(AHC)是一個高性能、異步的 HTTP 客戶端庫,廣泛用于 Java 和 Scala 應用中,特別適合處理高并發、非阻塞的 HTTP 請求。它基于 Netty 或 Java 原生的異步 HTTP 客戶端實現,支持 HTTP/1.1 和 HTTP/2 協議,適用于微服務、API 調用、爬蟲等場景。 1.…

Powershell、Windows Shell、CMD 的區別與聯系

Powershell、Windows Shell、CMD 的區別與聯系 一、核心概念 名稱 全稱 類型 發布時間 CMD Command Prompt 命令行解釋器&#xff08;CLI&#xff09; 1985&#xff08;DOS&#xff09; Powershell Windows PowerShell 任務自動化腳本環境 2006 Windows Shell Wi…

vulnhub-Tr0ll ssh爆破、wireshark流量分析,exp、尋找flag。思維導圖帶你清晰拿到所以flag

vulnhub-Tr0ll ssh爆破、wireshark流量分析&#xff0c;exp、尋找flag。思維導圖帶你清晰拿到所以flag 1、主機發現 arp-scan -l 2、端口掃描 nmap -sS -sV 192.168.66.185 nmap -sS -A -T4 -p- 192.168.66.185 nmap --scriptvuln 192.168.66.185經典掃描三件套&#xff0c;…

強化學習(趙世鈺版)-學習筆記(8.值函數方法)

本章是算法與方法的第四章&#xff0c;是TD算法的拓展&#xff0c;本質上是將狀態值與行為值的表征方式&#xff0c;從離散的表格形式&#xff0c;拓展到了連續的函數形式。 表格形式的優點是直觀&#xff0c;便于分析&#xff0c;缺點是數據量較大或者連續性狀態或者行為空間時…

[特殊字符] 2025藍橋杯備賽Day7——B2117 整理藥名

&#x1f50d; 2025藍橋杯備賽Day7——B2117 整理藥名 題目難度&#xff1a;?? 適合掌握字符串基礎操作 考察重點&#xff1a;大小寫轉換、字符串遍歷、邊界條件處理 B2117 整理藥名 題目描述 醫生在書寫藥品名的時候經常不注意大小寫&#xff0c;格式比較混亂。現要求你…

笛卡爾軌跡規劃之齊次變換矩陣與歐拉角、四元數的轉化

一、笛卡爾軌跡規劃需求 笛卡爾軌跡規劃本質就是我們對機械臂的末端位置和姿態進行規劃&#xff0c;其實也就是對末端坐標系的位姿進行規劃。我們清楚末端坐標系的位姿是可以用齊次變換矩陣T來表示的&#xff0c;但這樣表示的話&#xff0c;并不利于我們去做規劃&#xff0c;所…

【PCIe 總線及設備入門學習專欄 3.1 -- PCIe 中為何只有 TLP 會被 Switch 和 RC 進行路由?】

文章目錄 Overview為什么 DLLP 不需要路由呢?總結Overview 這里介紹些為什么在 PCIe 中只有 TLP(事務層數據包)會被 Switch 和 Root Complex(RC) 路由,而 DLLP(數據鏈路層數據包)和 Ordered Set 不會被路由。這是因為 TLP 起始于源端口的事務層,結束于目的端口的事務…

大摩閉門會:250321 學習總結報告

如果圖片分辨率不足&#xff0c;可右鍵圖片在新標簽打開圖片或者下載末尾源文件進行查看 本文只是針對視頻做相應學術記錄&#xff0c;進行學習討論使用