MySQL基礎架構執行流程
MySQL的架構大體分為兩層:Server 層和儲存引擎層
server層: 聯結器,查詢快取,分析器,最佳化器等,涵蓋MySQL的大多數核心服務功能,一級所有內建函式(如日期,時間,數學和加密函式等),所有誇儲存引起的功能都在這一層實現,比如:存過,觸發器,檢視等。
儲存引擎負責資料的儲存和提取:innoDB,MyISAM,Memory等 MySql5.5.5版本開始預設為InnoDB
各層次分工:
1.聯結器:顧名思義聯結器負責跟客戶端建立連線、獲取許可權、維持和管理連線
你可以在 show processlist 命令中看到它。Command列顯示為Sleep則表示該連線為空閒連結。
2.查詢快取:連線建立完成後,你就可以執行 select 語句了。執行邏輯第二步查詢快取。
優勢:提高查詢效率,適合表資料不經常做更新的。
劣勢:一張表有更新機會清空快取,命中率會很低。
使用引數 query_cache_type 設定成 DEMAND這樣對應預設的SQL語句是不適用查詢快取的,顯示指定的時候才會查詢快取如下:
select SQL_CACHE * FROM T WHERE ID = 10;
3.分析器:如果沒有命中快取則開始對SQL語句進行解析,生成解析樹。
4.經過了分析器,MySQL 就知道你要做什麼了。在開始執行之前得經過最佳化器的處理,包括表裡有多個索引時決定使用哪個索引;一個語句有多表關聯的時候決定各個表的連線順序;
例如:
mysql> select * from t1 join t2 using(ID) where t1.c=10 and t2.d=20;
既可以先從表 t1 裡面取出 c=10 的記錄的 ID 值,再根據 ID 值關聯到表 t2,再判斷 t2 裡面 d 的值是否等於20。
也可以先從表 t2 裡面取出 d=20 的記錄的 ID 值,再根據 ID 值關聯到 t1,再判斷 t1 裡面 c 的值是是否等於 10。
後邊仔細分析對索引的選擇
5. 執行器:MySql透過分析器知道了你要做什麼,透過最佳化器知道了該怎麼做,於是就進入了之情器階段開始執行語句。
如以下語句的執行過程:
mysql> select * from T where ID=10;
1).執行器會根據表定義的引擎取呼叫這個引擎所提供的介面。比如我們例句中提供的表T,ID無索引則會:
呼叫InnoDB引擎介面取這個表的第一行,判斷ID是否為10,如果不是則跳過,如果是則將這行存在結果集中;
2).呼叫引擎介面取“下一行”,重複相同的判斷邏輯,指導取到這個表的最後一行。
3).執行器將上述遍歷過程中所有滿足的條件行組成記錄集作為結果返回給客戶端。
至此這個語句執行就完成了。
對於有索引的表,執行的邏輯也差不多。第一次呼叫的是**“滿足條件得第一行“這個介面,之後迴圈取“滿足條件的下一行”這個介面。** 這些介面都是儲存殷勤中定義好的。
** rows_examined **:表示語句掃描了多少行,這個值就是執行器每次呼叫引擎獲取資料行時累加的。
在某些場景下,執行器呼叫一次,在引擎內部則掃描了多行,因此引擎掃描行數跟rows_examined(呼叫次數可能小於掃描行數)並不是完全相同的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2284996/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解析MySQL基礎架構及一條SQL語句的執行流程和流轉MySql架構
- MySQL 基礎架構MySql架構
- MySQL基礎架構MySql架構
- Spring 框架基礎(06):Mvc架構模式簡介,執行流程詳解Spring框架MVC架構模式
- MySQL基礎架構分析MySql架構
- MySQL之基礎架構MySql架構
- Mysql實戰:基礎架構MySql架構
- MySQL原理簡介—2.InnoDB架構原理和執行流程MySql架構
- 「MySQL」 MySQL執行流程MySql
- MySQL基礎架構和事務MySql架構
- Mysql 執行流程MySql
- mysql資料庫的基礎架構MySql資料庫架構
- 銀行IT架構變遷史(金融IT基礎架構)架構
- MySQL:Innodb page clean 執行緒 (一) 基礎MySql執行緒
- 01 | 基礎架構:一條SQL查詢語句是如何執行的?架構SQL
- 10、Ktor學習-執行程式和基礎架構;行程架構
- 架構設計之一——基礎架構架構
- Spring Cloud雲架構-Restful 基礎架構SpringCloud架構REST
- 探索ABP基礎架構架構
- redis哨兵架構基礎Redis架構
- 搭建基礎架構-Page架構
- 搭建基礎架構-ResultMsg架構
- 《SpringBoot 基礎架構師》Spring Boot架構
- 《MySQL 基礎篇》十:邏輯架構和儲存引擎MySql架構儲存引擎
- mysql的sql語句執行流程MySql
- 《架構基礎 從需求到架構》讀書架構
- mysql系統學習1- mysql的大體結構及執行流程MySql
- 執行緒基礎執行緒
- 《大前端 基礎元件》系列 CSS基礎架構前端元件CSS架構
- c++基礎十(流程結構)C++
- SaaS架構:流程架構分析架構
- HBase架構與基礎命令架構
- 探索ABP基礎架構-下架構
- IT架構的基礎實施架構
- ES 架構及基礎 - 1架構
- 基礎架構遷雲(三)架構
- 基礎架構遷雲(一)架構
- 基礎架構遷雲二()架構