MySQL執行select語句內部流程

2021-10-24 02:57:38 字數 805 閱讀 1252

一般來說,資料是儲存到服務端的,所以從客戶端讀取服務端資料要經歷如下幾個過程:

client–>query cache(查詢快取-預設關閉)–>parse(解析器)–>pre processor(預處理器)–>optimizer(優化器)–>execution plans(執行計畫)–>executor(執行器)–>storage engine(儲存引擎)–>client

客戶端請求的select語句,首先會請求儲存引擎進行快取的查詢,如果有這條sql語句,就直接取出來,不需要進行後面的操作。但是在mysql中的快取是預設關閉的,其原因主要是:

1.因為對於sql語句的快取必須保持每次快取的格式必須完全一樣。2.如果修改資料庫中的一條資料會更新整個快取。

在第一步中,如果沒有從儲存引擎裡面查詢到快取sql的話就會交給解析器處理sql語句,其主要包括:1.詞法分析:掃瞄字元流,根據構詞規則識別單個單詞。2.語法分析:在詞法分析的基礎上將單詞序列組成語法短語最後生成語法樹。

預處理器的目的就是為了減小mysql伺服器的壓力,通過解析器解析後的資料,預處理器將sql語句分為兩部分(語義分析):第一部分為前面相同的命令和結構部分;第二部分為後面可變的資料部分。

在mysql執行sql語句時,可能不會按照我們寫的順序執行,同時也不需要我們認為的從左到右安排where後面的條件,所以優化器會重寫sql,然後找出最佳查詢方法(查詢優化)。

mysql的執行計畫預設是關閉的,在面對億萬級資料的時候,當我們查詢效率不高的時候,就可以通過執行計畫知道查詢的瓶頸在**,是否需要索引以及改變sql語句。

操作儲存引擎,返回結果。

只用於儲存資料,給服務層提供讀寫的介面。

select查詢語句執行順序

分類 oracle體系結構 好文要頂 關注我收藏該文 張冲andy 關注 34 粉絲 44 加關注0 0 oracle表空間維護總結 move降低高水位 hwm 收藏 重新整理頁面 返回頂部 登入 或 註冊,訪問 首頁。推薦 超50萬vc 原始碼 大型組態工控 電力 cad與gis原始碼庫!緬懷 傳...

mysql 語句在哪執行 MySQL語句執行過程

平常我們看到的只是一條語句執行出來的結果,並不知道中間發生了什麼,今天就來 一下,mysql語句的執行過程。1.聯結器 每次使用mysql會先連線到資料庫上面,聯結器負責跟客戶端進行連線 mysql u root p 然後根據密碼,判斷我登陸進去會有什麼許可權,並分配許可權給我 通過 show pr...

MySQL筆記4 SELECT語句

為了使用select檢索表資料,必須至少給出兩條資訊 想選擇什麼,以及從什麼地方選擇。輸入 select prod name from products 分析 上述語句利用select 語句從products 表中檢索乙個名為prod name的列。所需的列名在select關鍵字之後給出,from關...