MySQL查詢select語句的執行流程以及InnoDB記憶體結構
MySQL查詢select語句的執行流程
1.客戶端需要與MySQL服務端建立連線;
2.在快取功能開啟的情況下,查詢快取,如果快取存在相應的結果,直接返回,若不存在,則進入解析器;
3.查詢語句會通過解析器進行詞法解析和語法解析,完成語法解析後會生成解析樹;
4.進入預處理階段,檢查上一步生成的解析樹,解決解析器無法解析的語義,預處理完成後會生成一個新的解析樹;
5.進入查詢優化器,根據解析樹生成不同的執行計劃,而MySQL使用的是基於開銷(cost)的優化器,即哪個執行計劃開銷最小則用哪個執行計劃;
6.執行引擎使用執行計劃操作儲存引擎,一方面將結果返回給客戶端,一方面將結果存放於記憶體/磁碟;
簡略流程圖:
InnoDB記憶體結構中有什麼?
1.Buffer Pool:記憶體緩衝區,能夠提高讀寫效率。
2.Change Buffer:當資料頁不是唯一索引以及不存在重複資料的情況下,會快取修改記錄,提升更新語句(Insert、Delete、Update)的執行速度。
3.Adaptive Hash Index:InnoDB會監控對錶上各索引頁的查詢,如果觀察該資料被訪問的頻次符合規則,那麼就建立雜湊索引來加快資料訪問的速度。
4.Log Buffer: 用於儲存要寫入磁碟的日誌檔案資料,日誌緩衝區的內容會定期重新整理到磁碟中。如果需要更新、插入、刪除多行資料的事務,則增加日誌緩衝區可以節省磁碟I/O。
InnoDB架構圖:
相關文章
- 一條查詢語句的執行流程
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- mysql的sql語句執行流程MySql
- MySQL 查詢語句執行過程淺析MySql
- MySQL探祕(三):InnoDB的記憶體結構和特性MySql記憶體
- MySQL底層概述—1.InnoDB記憶體結構MySql記憶體
- ORACLE結構化查詢語句Oracle
- sql查詢語句流程SQL
- mysql查詢語句MySql
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- Select語句執行順序
- SQL 查詢總是先執行SELECT語句嗎?你們都錯了!SQL
- MySQL系列之一條SQL查詢語句的執行過程MySql
- 面試官:MySQL 是如何執行一條查詢語句的?面試MySql
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- Mysql之查詢語句MySql
- mysql查詢語句集MySql
- SQL 查詢語句的執行順序解析SQL
- MySQL InnoDB記憶體配置MySql記憶體
- MySQL的簡單查詢語句MySql
- mysql dba常用的查詢語句MySql
- mysql查詢語句5:連線查詢MySql
- 當執行一條select語句時,MySQL到底做了啥?MySql
- 一條 SQL 查詢語句是如何執行的?SQL
- SQL Server 查詢歷史執行的SQL語句SQLServer
- mysql高階查詢語句MySql
- MySQL資料庫詳解(一)SQL查詢語句是如何執行的?MySql資料庫
- 輸入的查詢 SQL 語句,是如何執行的?SQL
- GaussDB SQL查詢語句執行過程解析SQL
- mysql中一條查詢語句的執行全過程是怎樣的?MySql
- MySQL -update語句流程總結MySql
- 01 | 基礎架構:一條SQL查詢語句是如何執行的?架構SQL
- mysql查詢效率慢的SQL語句MySql
- 學習MySQL的select語句MySql
- create table 使用select查詢語句建立表的方法分享
- INSERT...SELECT語句對查詢的表加鎖嗎
- ### 流程控制語句結構
- 流程控制語句結構