{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

一條SQL語句在MySQL中是如何執行的?

shusenshusen 回答0 收藏1
收藏問題

5條回答

lifefriend_007

lifefriend_007

回答于2022-06-28 13:48

1、客戶端發送一條查詢給服務器;然后客戶端能做的就只是等待服務端的結果。

2、服務端收到查詢后先檢查查詢緩存,如果剛好命中了緩存那么OK直接從緩存里拿出結果給客戶端。如果沒有那么就進入下一階段。

3、服務器段解析SQL語句并進行一定的預處理,然后在優化器生成對應的執行計劃(優化器的功能是找出最佳的執行計劃);如果在這個過程中遇到任何錯誤都可能停止此次查詢。

4、mysql根據優化器生成的最佳執行計劃,通過存儲引擎的API來執行查詢,返回查詢結果。

5、mysql將結果返回給客戶端。

實際上mysql執行的每一步都比較復雜,此處僅就流程簡要描述。


評論0 贊同0
  •  加載中...
entner

entner

回答于2022-06-28 13:48

MySQL執行SQL的流程大概這樣子的:

1. 連接器,這個步驟是和客戶端建立連接

2. 分析器,解析SQL語句,這一步如果SQL語句寫的不對就會報錯了

3. 優化器,這個步驟主要是選擇索引的,MySQL會選擇認為最優的索引,實際上可能不是最優的

4. 執行器,這個步驟主要是根據表的定義,調用具體的存儲引擎執行SQL,現在默認引擎是innodb。還有就是記錄binlog日志。

這里省略了查詢緩存的步驟,這個步驟在連接器之后,不過一般都是關閉緩存的。

評論0 贊同0
  •  加載中...
233jl

233jl

回答于2022-06-28 13:48

一張圖說明你的問題。

謝謝!


評論0 贊同0
  •  加載中...
Juven

Juven

回答于2022-06-28 13:48

作為一個剛入坑不久的碼農,我也想知道,如何才能快速學習數據庫。

評論0 贊同0
  •  加載中...
qianfeng

qianfeng

回答于2022-06-28 13:48

詞法分析->優化->表引擎,根據引擎需要中間可能還有一些回調,大體邏輯就是這樣

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<