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
- 查詢最佔資源、CPU、記憶體、和執行最長的SQL語句記憶體SQL
- mysql的sql語句執行流程MySql
- 查詢orcale執行的SQL語句記錄SQL
- MySQL 查詢語句執行過程淺析MySql
- [Mysql 查詢語句]——查詢指定記錄MySql
- MySQL探祕(三):InnoDB的記憶體結構和特性MySql記憶體
- 查詢執行慢的SQL語句SQL
- 查詢正在執行的SQL語句SQL
- sql查詢語句流程SQL
- ORACLE結構化查詢語句Oracle
- SQL語句查詢表結構SQL
- 查詢正在執行的sql語句及該語句執行的時間SQL
- 面試官:MySQL 是如何執行一條查詢語句的?面試MySql
- mysql查詢語句MySql
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- 查詢Oracle正在執行的SQL語句OracleSQL
- 查詢語句(SELECT)的最佳化
- 查詢sql語句執行次數SQL
- MySQL InnoDB的記憶體管理MySql記憶體
- MySQL系列之一條SQL查詢語句的執行過程MySql
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- MySQL InnoDB記憶體配置MySql記憶體
- [Mysql 查詢語句]——查詢欄位MySql
- SQL 查詢語句的執行順序解析SQL
- mysql查詢語句集MySql
- MySQL查詢阻塞語句MySql
- Mysql之查詢語句MySql
- YCSB擴充套件-語句執行頻率,執行指定的測試查詢語句套件
- SQL 查詢總是先執行SELECT語句嗎?你們都錯了!SQL
- [Mysql 查詢語句]——對查詢結果進一步的操作MySql
- Select語句執行順序
- MySQL的簡單查詢語句MySql
- mysql dba常用的查詢語句MySql
- mysql查詢語句5:連線查詢MySql
- [Mysql 查詢語句]——分組查詢group byMySql