基礎架構(1)

来源:https://www.cnblogs.com/jackw1/archive/2020/03/30/12597078.html
-Advertisement-
Play Games

`MySQL`分為兩部分: 層 包含連接器、查詢緩存、分析器、優化器、執行器等,涵蓋 的大多數核心服務功能,以及所有的內置函數(如日期、時間、數學和加密函數等),所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖等。 存儲引擎層 負責數據的存儲和提取。其架構模式是插件式的,支持 、`My ...


MySQL分為兩部分:

  • Server
    包含連接器、查詢緩存、分析器、優化器、執行器等,涵蓋MySQL的大多數核心服務功能,以及所有的內置函數(如日期、時間、數學和加密函數等),所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖等。
  • 存儲引擎層
    負責數據的存儲和提取。其架構模式是插件式的,支持InnoDBMyISAMMemory等多個存儲引擎,MySQL 5.5.5版本開始InnoDB為預設的存儲引擎。

Server

  • 連接器
    負責跟客戶端建立連接、獲取許可權、維持和管理連接

    mysql -h$ip -P$port -u$user -p //連接資料庫
    

    輸入密碼後,如果用戶名或密碼不對,則會提示Access denied for user,如果認證通過,連接器會到許可權表裡面查出你擁有的許可權。之後,這個連接裡面的許可權判斷邏輯,都將依賴此時讀到的許可權。

    show processlist //顯示所有連接
    
  • 查詢緩存
    命中則直接返回結果。MySQL拿到查詢請求後,會先到查詢緩存看看,之前是否執行過這條語句,之前執行過的語句及其結果可能會以key-value對的形式,被直接緩存在記憶體中,keysql語句,有則返回。沒有就會進行分析器以後的流程,執行完成後結果會被存入查詢緩存。當表中有執行更新操作時,則該表對應的所有查詢緩存失效。MySQL 8.0版本直接將查詢緩存的整塊功能刪掉了。

  • 分析器
    詞法分析,語法分析。如果沒有命中查詢緩存,就要開始執行語句,MySQL需要知道你要做什麼,需要對SQL語句進行分析。
    詞法分析:SQL語句中各個字元串分別代表什麼
    語法分析:判斷SQL語句是否滿足MySQL語法。

  • 優化器
    執行計劃生成,索引選擇。在表裡有多個索引時決定用哪個索引;在一個語句有多表關聯時,決定各個表的連接順序等。優化器得出幾個方案後,會選擇最好的方案。

  • 執行器
    操作存儲引擎,返回結果


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQL為什麼需要優化? 對於初學者來說,能夠寫出實現功能的SQL語句而不出錯,查詢出所需要的結果,就已經能夠滿足日常使用了。但在某些場景,對性能的要求比較高,因此,要求SQL的執行響應速度快,就需要對SQL進行一定程度的優化。 在實際應用場景中,MySQL經常會存在諸如性能低、執行時間過長、等待時間 ...
  • `MySQL`的行鎖在引擎層由各個引擎自己實現的,但並不是所有的引擎都支持行鎖。 不支持行鎖意味著併發控制只能使用表鎖,對於這種引擎的表,同一張表任何時刻只能有一個更新在執行,這會影響到業務併發度。 引擎下的事務中,行鎖是需要的時候才加上的,但並不是不需要了立刻釋放,而是要等到事務結束時(commi ...
  • 上一篇文章主要介紹了MySQL在Ubuntu18.04系統上的安裝,以及安裝過程中可能會遇到的一些問題的解決方案。 在這篇文章里,開始介紹MySQL資料庫的邏輯分層。通過本文的介紹,可以大致瞭解到MySQL的語句從客戶端發出請求後,在伺服器經歷了怎樣的過程。有助於後面MySQL優化的加深理解。 My ...
  • 註意: 本文操作環境為win10系統wsl下的Ubuntu18.04,對於原生的Ubuntu18.04同樣適用。MySQL預設版本為5.7,其他版本不適用。 安裝步驟 1.更新源: 2.安裝mysql: wsl下使用上述命令安裝就直接安裝上去了,沒有設置密碼的地方,這時候無論怎麼登陸,都無法登錄上去 ...
  • 在下列表T中,執行 ,需要執行幾次樹的搜索操作? 語句執行流程: 1. 在k索引樹上找到k值為3的記錄,取得ID為300 2. 再到ID索引樹上找到ID為300對應的R3記錄 3. 在k索引樹上找到k值為5的記錄,取得ID為500 4. 再回到ID索引樹上找到ID為500對應的R4記錄 5. 在k索 ...
  • 索引 作用:提高數據查詢的效率 常用索引模型 哈希表 有序數組 搜索樹 哈希表 _以鍵值對的形式存儲,適合於只有等值查詢的場景。_ 用一個哈希函數把 換算成一個確定的位置,然後把 這個位置的數組中。一個 會對應一個數組,數組中會有多個 ,`value`並不是有序的。 查找時先通過哈希函數算出 ,找到 ...
  • 事務 保證一組資料庫操作,要麼全部成功,要麼全部失敗。 特性 原子性: 一致性: 隔離性: 持久性: 當資料庫中有多個事務同時執行的時候,就可能出現臟讀( )、不可重覆讀( )、幻讀( )的問題,為瞭解決這些問題,就有了“隔離級別”的概念。隔離的越嚴實,效率就會越低,需要在兩者之間找一個平衡點。 事 ...
  • :重做日誌。每當有操作時,在數據變更之前將操作寫入 ,這樣當發生掉電之類的情況時系統可以在重啟後繼續操作 :稱為撤銷日誌,當一些變更執行到一半無法完成時,可以根據撤銷日誌恢復到變更之間的狀態。 位於存儲引擎層, 中有使用。 的`redo log`是固定大小,比如配置一組4個文件,每個文件的大小為1G ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...