一條sql語句在mysql中的執行流程(Mysql基礎架構)

mysql基礎架構

MySQL 主要分為 Server 層存儲引擎層
Server 層:主要包括 連接器、查詢緩存、分析器、優化器、執行器等,所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖,函數等,還有一個通用的日志模塊 binglog 日志模塊。
存儲引擎: 主要負責數據的存儲和讀取。
名詞解釋:
連接器: 身份認證和權限相關(登錄 MySQL 的時候)。
查詢緩存: 執行查詢語句的時候,會先查詢緩存(MySQL 8.0 版本后移除,因為這個功能不太實用)。
分析器: 沒有命中緩存的話,SQL 語句就會經過分析器,分析器主要分析你的 SQL 語句要干嘛,再檢查你的 SQL 語句語法是否正確。
優化器: 按照 MySQL 認為最優的方案去執行。
執行器: 執行語句,然后從存儲引擎返回數據。

查詢sql語句的執行流程:

  1. 1、先檢查該語句是否有權限,如果沒有權限,直接返回錯誤信息。如果有權限,在 MySQL8.0 版本以前,會先查詢緩存,以這條 sql 語句為 key 在內存中查詢是否有結果,如果有直接緩存,如果沒有,執行下一步。)
  2. 2、通過分析器進行分析,先詞法分析,提取關鍵字,提出查詢的表,提出字段名,提出查詢條件等等;再語法分析,主要判斷你輸入的 sql 是否正確,是否符合 MySQL 的語法。
  3. 3、優化器進行確定執行方案。
  4. 4、還要進行權限校驗,如果沒有權限就會返回錯誤信息,如果有權限就會調用數據庫引擎接口,返回引擎的執行結果。

更新sql語句的執行流程:

基本上會沿查詢的流程走,但執行更新的時候要記錄日志,此時日志模塊有:MySQL 自帶的日志模塊式 binlog(歸檔日志) ,所有的存儲引擎都可以使用;InnoDB 引擎還自帶了一個日志模塊 redo log(重做日志)。
InnoDB 模式下來更新sql語句的執行流程如下:
  1. 先查詢到張三這一條數據,如果有緩存,也是會用到緩存。
  2. 然后拿到查詢的語句,進行更新,然后調用引擎 API 接口,寫入這一行數據,InnoDB 引擎把數據保存在內存中,同時記錄 redo log,此時 redo log 進入 prepare 狀態,然后告訴執行器,執行完成了,隨時可以提交。
  3. 執行器收到通知后記錄 binlog,然后調用引擎接口,提交 redo log 為提交狀態。
  4. 更新完成。

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

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

相關文章

GitLens with `Commit Graph`

文章目錄 GitLens with Commit Graph GitLens with Commit Graph 想要更直觀地查看 Git 提交歷史?我打包了一個支持 Commit Graph 的 GitLens 版本,讓你輕松在 VSCode 中查看分支、合并、變更記錄等內容,一目了然! &#x1f4cc…

C#里使用libxl的數字格式

由于EXCEL里可以表示不同的數字格式, 比如表示貨幣數字時,與表示普通序號的數字就不一樣。 還有科學計算表示的數字使用小數點位數與普通貨幣也不一樣。 如下所示: 要使用這些格式, 下面創建一個例子來演示保存這些數字格式: private void button11_Click(object send…

CentOS 7擴容 /dev/shm

在 CentOS 7 中,/dev/shm 是基于內存的臨時文件系統(tmpfs),其大小通常為系統內存的一半。要擴容 /dev/shm,可以通過重新掛載 tmpfs 并指定新的大小來實現。 擴容步驟 查看當前 /dev/shm 的大小: df -h /d…

【一起學Rust | Tauri2.0框架】基于 Rust 與 Tauri 2.0 框架實現全局狀態管理

前言 在現代應用程序開發中,狀態管理是構建復雜且可維護應用的關鍵。隨著應用程序規模的增長,組件之間共享和同步狀態變得越來越具有挑戰性。如果處理不當,狀態管理可能會導致代碼混亂、難以調試,并最終影響應用程序的性能和可擴…

百度SEO和必應SEO優化方法

如需SEO服務,可以搜索:深圳市信科網絡科技有限公司。 一、搜索引擎生態格局:流量入口的重新洗牌 2025 年,中國 PC 端搜索引擎市場正經歷戲劇性變革。StatCounter 數據顯示,必應憑借 Edge 瀏覽器的預裝優勢與 ChatGPT …

Redis 事件機制詳解

Redis 事件機制詳解 Redis 的事件機制是其高性能和高并發能力的關鍵之一,它采用Reactor 模型,基于文件事件驅動機制實現高效的 I/O 處理。Redis 的事件機制主要分為以下幾類: 文件事件(File Event) —— 處理網絡 I/…

【LangChain入門 3 Prompts組件】聊天提示詞模板 ChatPromptTemplate

文章目錄 一、 聊天信息提示詞模板1.1 使用關鍵字1.2 使用SystemMessage, HumanMessage, AIMessage來定義消息1.3 使用MessagesPlaceholder 在特定未知添加消息列表 二、關鍵類介紹2.1 ChatPromptTemplate 類2.1.1 from_messages()2.1.2 format_messages()2.1.3 format_prompt(…

Flutter TextFormField 完全手冊與設計最佳實踐

目錄 1. 引言 2. TextFormField 的基本用法 3. 主要屬性 4. 自定義 TextFormField 樣式 4.1 設置邊框樣式 4.2 設置輸入格式限制 4.3 多行輸入 5. 結論 相關推薦 1. 引言 在 Flutter 中,TextFormField 是 TextField 的擴展版本,專為表單輸入設計…

HC-05與HC-06藍牙配對零基礎教程 以及openmv識別及遠程傳輸項目的概述

這個是上一年的項目,之前弄得不怎么完整,只有一個openmv的,所以openmv自己去我主頁找,這篇主要講藍牙 這個是我在使用openmv連接單片機1然后單片機1與單片機2通過藍牙進行通信 最終實現的效果是:openmv識別到圖形和數…

【Docker系列一】Docker 簡介

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

Vue 入門到實戰 五

第5章 過渡與動畫 目錄 5.1 單元素/組件過渡 5.1.1 過渡class 5.1.2 CSS 過渡 5.1.3 CSS 動畫 5.1.4 同時使用過渡和動畫 5.1.5 JavaScript 鉤子方法 5.2 多元素/組件過渡 5.2.1 多元素過渡 5.2.2 多組件過渡 5.3 列表過渡 5.3.1 列表的普通過渡 5.3.2 列表的平滑…

Apache SeaTunnel腳本升級及參數調優實戰

最近作者針對實時數倉的Apache SeaTunnel同步鏈路,完成了雙引擎架構升級與全鏈路參數深度調優,希望本文能夠給大家有所啟發,歡迎批評指正! Apache SeaTunnel 版本 :2.3.9 Doris版本:2.0.6 MySQL JDBC Conne…

C++ 時間操作:獲取有史以來的天數與文件計數器

C 時間操作:獲取有史以來的天數與文件計數器 在C中,時間操作是一個非常重要的功能,尤其是在需要處理日期、時間戳或定時任務時。本文將介紹如何利用C的時間操作功能,實現以下兩個目標: 獲取從Unix紀元時間&#xff0…

Python Bug修復案例分析:Python 中常見的 IndentationError 錯誤 bug 的修復

在 Python 編程的世界里,代碼的可讀性和規范性至關重要。Python 通過強制使用縮進來表示代碼塊的層次結構,這一獨特的設計理念使得代碼更加清晰易讀。然而,正是這種對縮進的嚴格要求,導致開發者在編寫代碼時,稍有不慎就…

【論文筆記】Transformer

Transformer 2017 年,谷歌團隊提出 Transformer 結構,Transformer 首先應用在自然語言處理領域中的機器翻譯任務上,Transformer 結構完全構建于注意力機制,完全丟棄遞歸和卷積的結構,這使得 Transformer 結構效率更高…

CI/CD(三) 安裝nfs并指定k8s默認storageClass

一、NFS 服務端安裝(主節點 10.60.0.20) 1. 安裝 NFS 服務端 sudo apt update sudo apt install -y nfs-kernel-server 2. 創建共享目錄并配置權限 sudo mkdir -p /data/k8s sudo chown nobody:nogroup /data/k8s # 允許匿名訪問 sudo chmod 777 /dat…

【QA】單件模式在Qt中有哪些應用?

單例設計模式確保一個類僅有一個實例,并提供一個全局訪問點來獲取該實例。在 Qt 框架中,有不少類的設計采用了單例模式,以下為你詳細介紹并給出相應代碼示例。 1. QApplication QApplication 是 Qt GUI 應用程序的核心類,每個 Q…

存儲過程觸發器習題整理1

46、{blank}設有商品表(商品號,商品名,單價)和銷售表(銷售單據號,商品號,銷售時間,銷售數量,銷售單價)。其中,商品號代表一類商品,商品號、單價、銷售數量和銷售單價均為整型。請編寫…

基于ChatGPT、GIS與Python機器學習的地質災害風險評估、易發性分析、信息化建庫及災后重建高級實踐

第一章、ChatGPT、DeepSeek大語言模型提示詞與地質災害基礎及平臺介紹【基礎實踐篇】 1、什么是大模型? 大模型(Large Language Model, LLM)是一種基于深度學習技術的大規模自然語言處理模型。 代表性大模型:GPT-4、BERT、T5、Ch…

單表達式倒計時工具:datetime的極度優雅(智普清言)

一個簡單表達式,也可以優雅自成工具。 筆記模板由python腳本于2025-03-22 20:25:49創建,本篇筆記適合任意喜歡學習的coder翻閱。 【學習的細節是歡悅的歷程】 博客的核心價值:在于輸出思考與經驗,而不僅僅是知識的簡單復述。 Pyth…