天天看點

mysql 查詢語句_mysql之sql查詢語句曆程mysql體系結構一條sql語句的執行過程小結

mysql 查詢語句_mysql之sql查詢語句曆程mysql體系結構一條sql語句的執行過程小結

查詢

mysql執行一條sql查詢語句背後發生了什麼呢?

我是李福春,我在準備面試,今天的題目是:

mysql的體系結構是怎樣的?一條sql語句在mysql的體系結構中經曆了什麼?

答:

mysql體系結構

mysql的題解結構可以分成3個部分。列舉如下:

mysql-client: 比如一個指令行,或者使用java的JDBC發送sql語句

mysql-server: 分為5個部分

連接配接器 (管理連接配接權限認證) 查詢緩存 (命中則緩存起來) 分析器 (詞法 文法分析) 優化器 (執行計劃生成,索引選擇) 執行器 (操作,傳回結果)

mysql-存儲引擎: 負責存儲資料,提供讀寫接口(建表的時候指定MyISAM,InnoDB , Memory)

一條sql語句的執行過程

一條sql語句在mysql體系中的流轉過程:

1,連接配接器: 首先打開指令行,指令:mysql -h${ip} -P${port} -u${user} -p ,輸入密碼。 使用連接配接器連接配接服務端; 連接配接成功之後,權限修改不會影響目前連接配接,連接配接的有效期預設是8個小時; 連接配接之後,執行過程中使用記憶體會持續增加,應該定時重置連接配接狀态,防止oom;

2,查詢緩存:如果查詢比較頻繁,按照key,value的方式放入緩存,命中緩存則直接傳回; 如果更新比較頻繁,建議不要使用查詢緩存,query_cache_type=demand ,然後如果需要,可以在select後面帶上 SQL_CACHE ; mysql8.0之後移除了查詢緩存;

3,分析器:解析文法和詞法,如果文法錯誤,會直接給出提示;

4,優化器:比如join語句執行方法的邏輯,如何選擇索引等;

5, 執行器:核對執行權限,調用存儲引擎的接口,按照文法循環執行,傳回結果集。 可以觀察 row_examined ,引擎掃描行數。

小結

本節介紹了mysql的體系結構。

然後跟蹤了一條查詢sql在體系結構中流轉過程。

mysql 查詢語句_mysql之sql查詢語句曆程mysql體系結構一條sql語句的執行過程小結

腦圖小結

原創不易,轉載請注明出處,讓我們互通有無,共同進步,歡迎多溝通交流。

繼續閱讀