【MySQL】SQL語句在MySQL中的執行過程?主要存儲引擎區別?

MySQL SQL語句執行過程詳解

作為面試官,我來詳細剖析一條SQL語句在MySQL中的完整執行過程,這是每個后端開發者都應該掌握的核心知識。

一、連接階段

  1. 建立連接
  • 客戶端通過TCP/IP協議與MySQL服務器建立連接(默認3306端口)
  • 服務器驗證用戶名、密碼和權限
  • 連接管理器創建線程處理該連接(線程池優化)
  1. 查詢緩存(MySQL 8.0已移除)
  • 如果是SELECT語句,先檢查查詢緩存
  • 命中緩存則直接返回結果(緩存key是完整SQL)
  • 注意:表數據變更加粗樣式會使相關緩存失效

二、解析與優化階段

  1. 解析器處理
  • 詞法分析:將SQL拆分為token(關鍵字、標識符等)
  • 語法分析:檢查SQL是否符合語法規則
  • 生成解析樹(語法樹)
  1. 預處理器
  • 檢查表和列是否存在
  • 檢查權限
  • 視圖展開等轉換操作
  1. 查詢優化器
  • 基于成本優化(CBO)選擇最優執行計劃加粗樣式
  • 考慮因素:索引、表大小、JOIN順序等
  • 生成執行計劃(可通過EXPLAIN查看)

三、執行階段

  1. 執行引擎處理
  • 調用存儲引擎API執行計劃
  • 不同存儲引擎(如InnoDB)實現不同
  1. InnoDB引擎處理流程
  • 緩沖池(Buffer Pool)檢查:首先檢查所需數據頁是否在內存
  • 磁盤讀取:若不在緩沖池,從磁盤加載數據頁到內存
  • 鎖機制:根據隔離級別加鎖(共享鎖/排他鎖)
  • 事務處理寫入undo log(用于回滾)和redo log(用于恢復)
  • 返回結果:將結果集放入網絡緩沖區

四、返回結果

  1. 結果返回客戶端
  • 結果集通過網絡協議返回
  • 客戶端逐步接收并處理數據
  • 連接保持或關閉(取決于配置)

MySQL存儲引擎區別詳解

一、MySQL主要存儲引擎

  1. InnoDB (MySQL 5.5+默認引擎)
  2. MyISAM (MySQL 5.5前默認引擎)
  3. MEMORY (內存引擎)
  4. ARCHIVE (歸檔引擎)
  5. CSV (CSV文件引擎)
  6. BLACKHOLE (黑洞引擎)
  7. FEDERATED (聯邦引擎)
  8. MERGE (MyISAM集合引擎)

二、核心引擎對比(InnoDB vs MyISAM)

特性InnoDBMyISAM
事務支持支持ACID事務不支持
鎖粒度行級鎖表級鎖
外鍵支持支持不支持
崩潰恢復有redo log保證無保證
MVCC支持多版本并發控制不支持
存儲限制64TB256TB
緩存機制緩沖池緩存數據和索引只緩存索引
全文索引MySQL 5.6+支持支持
壓縮表支持支持
適用場景OLTP、高并發寫OLAP、讀密集型、數據倉庫

三、引擎特點

引自騰訊云 MySQL 的存儲引擎有哪些?它們之間有什么區別?

  1. InnoDB
  • 事務支持:InnoDB 是默認的存儲引擎,支持事務處理(ACID 屬性)。
  • 行級鎖:使用行級鎖,適合高并發環境。
  • 外鍵支持:支持外鍵約束。
  • 崩潰恢復:具有自動崩潰恢復功能。
  • 性能:在讀寫混合加粗樣式負載下表現良好。
  • 存儲:數據存儲在表空間中,支持表空間的動態擴展加粗樣式
  1. MyISAM
  • 不支持事務:不支持事務處理。
  • 表級鎖:使用表級鎖,不適合高并發寫操作。
  • 全文索引:支持全文索引,適合搜索引擎等應用。
  • 性能:在只讀或讀多寫少的場景下性能較好。
  • 存儲:數據存儲在磁盤文件中,每個表對應一個 .MYD 文件(數據文件)和一個 .MYI 文件(索引文件)。
  1. Memory
  • 內存存儲:數據存儲在內存中,速度快但不持久。
  • 臨時數據:適合存儲臨時數據,如緩存、中間結果等。
  • 不支持事務:不支持事務處理。
  • 表級鎖:使用表級鎖
  • 性能:在需要高速讀取的場景下性能非常好。
  1. Archive
  • 壓縮存儲:數據以壓縮格式存儲,占用空間小。
  • 只讀:主要用于歸檔和日志記錄不支持更新操作。
  • 不支持索引:不支持索引,查詢性能較差。
  • 性能:適合存儲大量歷史數據,節省存儲空間。
  1. CSV
  • CSV 文件:數據存儲在 CSV 文件中,可以直接用文本編輯器打開
  • 簡單:適合簡單的數據導入導出操作。
  • 不支持事務:不支持事務處理。
  • 性能:性能較低,不適合大規模數據操作。
  1. Blackhole
  • 黑洞存儲:所有寫入的數據都會被丟棄,不實際存儲任何數據。
  • 日志記錄:主要用于測試和日志記錄
  • 性能:寫操作非常快,因為數據實際上沒有被存儲。
  1. Federated
  • 遠程表:允許訪問其他 MySQL 服務器上的表,實現分布式數據庫
  • 性能:性能受網絡延遲影響較大。
  • 不支持事務:不支持事務處理。
  1. Merge
  • 合并多個表:可以將多個 MyISAM 表合并成一個邏輯表。
  • 性能:適合需要對多個表進行統一查詢的場景。
  • 不支持事務:不支持事務處理。

https://github.com/0voice

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

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

相關文章

【記錄】服務器安裝ffmpeg

前言 因為項目中需要用到 ffmpeg 進行圖像的一些操作,本文記錄下在服務器安裝 ffmpeg 的全過程,還是具有一定挑戰性的。 系統詳情 本文使用的操作系統詳情如下 通過 命令 cat /etc/os-release 獲取 雖然操作系統為 Rocky Linux,但安裝過程是通用的,因為本文記錄的是從源代碼…

Django之modelform使用

Django新增修改數據功能優化 目錄 1.新增數據功能優化 2.修改數據功能優化 在我們做數據優化處理之前, 我們先回顧下傳統的寫法, 是如何實現增加修改的。 我們需要在templates里面新建前端的頁面, 需要有新增還要刪除, 比如說員工數據的新增, 那需要有很多個輸入框, 那html…

HTML5 應用程序緩存:原理、實踐與演進

在 Web 技術的發展歷程中,HTML5 引入的應用程序緩存(Application Cache)曾是提升 Web 應用離線體驗的重要技術。它允許 Web 應用進行緩存,使用戶在沒有因特網連接時也能訪問應用,為 Web 應用帶來了顯著的優勢。然而&am…

【問題筆記】解決python虛擬環境運行腳本無法激活問題

【問題筆記】解決python虛擬環境運行腳本無法激活問題 錯誤提示問題所在解決方法**方法 1:臨時更改執行策略****方法 2:永久更改執行策略** **完整流程示例** 錯誤提示 PS F:\PythonProject\0419graphrag-local-ollama-main> venv1\Scripts\activate…

解決echarts餅圖label顯示不全的問題

解決辦法 添加如下配置: labelLayout: {hideOverlap: false},

Pandas數據合并與重塑

在數據處理與分析的領域中,Pandas 無疑是一顆璀璨的明星。它提供了豐富且強大的功能,讓我們能夠輕松應對各種復雜的數據操作。其中,數據合并與重塑是兩個至關重要的環節,它們能夠幫助我們整合不同來源的數據,調整數據的…

Nodejs數據庫單一連接模式和連接池模式的概述及寫法

概述 單一連接模式和連接池模式是數據庫連接的兩種主要方式: 單一連接模式: 優點:實現簡單,適合小型應用缺點:每次請求都需要創建新連接,連接創建和銷毀開銷大,并發性能差,容易出…

將 DeepSeek 集成到 Spring Boot 項目實現通過 AI 對話方式操作后臺數據

文章目錄 項目簡介GiteeMCP 簡介環境要求項目代碼核心實現代碼MCP 服務端(批量注冊 Tool)MCP 客戶端(調用 DeepSeek) DeepSeek APIDockersse 連接ws 連接(推薦)http 連接 Cherry Studio配置模型配置 MCP調用…

【HDFS入門】HDFS性能調優實戰:壓縮與編碼技術深度解析

目錄 1 HDFS性能調優概述 2 HDFS壓縮技術原理與應用 2.1 常見壓縮算法比較 2.2 壓縮流程架構 2.3 壓縮配置實踐 3 列式存儲編碼技術 3.1 ORC與Parquet對比 3.2 ORC文件結構 3.3 Parquet編碼流程 4 性能調優實戰建議 4.1 壓縮選擇策略 4.2 編碼優化技巧 5 性能測試…

HCIP --- OSPF綜合實驗

一、拓撲圖 二、實驗要求 1,R5為ISP,其上只能配置IP地址;R4作為企業邊界路由器,出口公網地址需要通過PPP協議獲取,并進行chap認證。 2,整個0SPF環境IP基于172.16.0.8/16劃分。 3,所有設備均可訪問R5的環…

c++:線程(std::thread)

目錄 從第一性原理出發:為什么需要線程? ? 本質定義: 📌 使用基本語法: 線程之間的“并發”與“并行”的區別 線程安全與數據競爭(Race Condition) 如何讓線程“安全地”訪問數據&#x…

PCL軟件架構

Point Cloud Library (PCL) 采用模塊化設計,提供了豐富的點云處理功能。以下是PCL的核心架構和主要類的詳細介紹。 一、PCL整體架構 PCL的架構可以分為以下幾個主要層次: 數據表示層:基礎點云數據結構和基本操作 算法層:各種點云處理算法實現 I/O層:點云數據的輸入輸出 …

CCLinkIE轉EtherCAT邊緣計算網關構建智能產線:跨協議設備動態組網與數據優化傳輸

一、行業背景 隨著新能源汽車市場爆發式增長,汽車制造企業對產線效率、設備協同性及柔性生產能力的要求顯著提升。傳統產線多采用CC-LinkIEFieldBasic(CCLINKIEFB)協議的三菱PLC控制系統,而新一代伺服驅動設備普遍采用EtherCAT協…

模態雙俠闖江湖:SimTier 分層破局,MAKE 智煉新知

目錄 利用多模態表示提升淘寶展示廣告效果:挑戰、方法與洞察摘要1 引言2 預備知識推薦模型中的ID特征基于ID的模型結構 3 多模態表示的預訓練3.1 語義感知對比學習3.2 預訓練數據集的構建3.3 優化 4 與推薦模型的集成4.1 觀察和見解4.2 方法一:SimTier4.…

基于大模型的下肢靜脈曲張全流程預測與診療方案研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 1.3 研究方法與數據來源 二、下肢靜脈曲張概述 2.1 定義與病理生理 2.2 風險因素與臨床表現 2.3 診斷方法與現有治療手段 三、大模型預測原理與構建 3.1 大模型技術簡介 3.2 預測模型的數據收集與預處理 3.…

跨站腳本(XSS) 的詳細分類、對比及解決方案

以下是 跨站腳本(XSS) 的詳細分類、對比及解決方案: 一、XSS的分類與詳解 1. 反射型XSS(非持久型XSS) 定義:攻擊載荷通過URL參數傳遞,服務器直接返回到頁面中,需用戶主動觸發。 工…

thinkphp實現圖像驗證碼

示例 服務類 app\common\lib\captcha <?php namespace app\common\lib\captcha;use think\facade\Cache; use think\facade\Config; use Exception;class Captcha {private $im null; // 驗證碼圖片實例private $color null; // 驗證碼字體顏色// 默認配置protected $co…

swift-12-Error處理、關聯類型、assert、泛型_

一、錯誤類型 開發過程常見的錯誤 語法錯誤&#xff08;編譯報錯&#xff09; 邏輯錯誤 運行時錯誤&#xff08;可能會導致閃退&#xff0c;一般也叫做異常&#xff09; 2.1 通過結構體 第一步 struct MyError : Errort { var msg: String &#xff5d; 第二步 func divide(_ …

實驗擴充 LED顯示4*4鍵位值

代碼功能概述 鍵盤掃描&#xff1a; 使用 KeyPort&#xff08;定義為 P1&#xff09;作為鍵盤輸入端口。掃描 4x4 矩陣鍵盤&#xff0c;檢測按鍵并返回按鍵編號&#xff08;0~15&#xff09;。 數碼管顯示&#xff1a; 根據按鍵編號&#xff0c;從 SegCode 數組中獲取對應數碼…

從零開始搭建CLIP模型實現基于文本的圖像檢索

目錄 CLIP原理簡介代碼實現參考鏈接 CLIP原理簡介 論文鏈接&#xff0c;源碼鏈接 CLIP模型由OpenAI在2021年提出&#xff0c;利用雙Decoder&#xff08;Dual Encoder&#xff09;的架構來學習圖像和文本之間的對應關系&#xff0c;是多模態大模型的開創之作&#xff0c;為后續許…