1.MySQL基礎架構執行流程
MySQL的架構示意:
MySQL大體分為兩層:Server 層和儲存引擎層
- server層: 聯結器,查詢快取,分析器,優化器等,涵蓋MySQL的大多數核心服務功能,一級所有內建函式(如日期,時間,數學和加密函式等),所有誇儲存引起的功能都在這一層實現,比如:存過,觸發器,檢視等。
- 儲存引擎負責資料的儲存和提取:innoDB,MyISAM,Memory等 MySql5.5.5版本開始預設為InnoDB
個層次分工:
- 聯結器:顧名思義聯結器負責跟客戶端建立連線、獲取許可權、維持和管理連線
你可以在 show processlist 命令中看到它。Command列顯示為Sleep則表示該連線為空閒連結。 - 查詢快取:連線建立完成後,你就可以執行 select 語句了。執行邏輯第二步查詢快取。
優勢:提高查詢效率,適合表資料不經常做更新的。
劣勢:一張表有更新機會清空快取,命中率會很低。
使用引數 query_cache_type 設定成 DEMAND這樣對應預設的SQL語句是不適用查詢快取的,顯示指定的時候才會查詢快取如下:
select SQL_CACHE * FROM T WHERE ID = 10;
- 分析器:如果沒有命中快取則開始對SQL語句進行解析,生成解析樹。
- 經過了分析器,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;
執行器會根據表定義的引擎取呼叫這個引擎所提供的介面。比如我們例句中提供的表T,ID無索引則會:
- 呼叫InnoDB引擎介面取這個表的第一行,判斷ID是否為10,如果不是則跳過,如果是則將這行存在結果集中;
2.呼叫引擎介面取“下一行”,重複相同的判斷邏輯,指導取到這個表的最後一行。
3.執行器將上述遍歷過程中所有滿足的條件行組成記錄集作為結果返回給客戶端。
至此這個語句執行就完成了。
對於有索引的表,執行的邏輯也差不多。第一次呼叫的是**“滿足條件得第一行“這個介面,之後迴圈取“滿足條件的下一行”這個介面。** 這些介面都是儲存殷勤中定義好的。
** rows_examined **:表示語句掃描了多少行,這個值就是執行器每次呼叫引擎獲取資料行時累加的。
在某些場景下,執行器呼叫一次,在引擎內部則掃描了多行,因此引擎掃描行數跟rows_examined(呼叫次數可能小於掃描行數)並不是完全相同的
以上內容為閱讀《極客時間》MySQL知識整理。
相關推薦
1.MySQL基礎架構執行流程
MySQL的架構示意: MySQL大體分為兩層:Server 層和儲存引擎層 server層: 聯結器,查詢快取,分析器,優化器等,涵蓋MySQL的大多數核心服務功能,一級所有內建函式(如日期,時
MySQL基礎架構執行流程
MySQL的架構示意: MySQL大體分為兩層:Server 層和儲存引擎層 server層: 聯結器,查詢快取,分析器,優化器等,涵蓋MySQL的大多數核心服務功能,一級所有內建函式(如日期,時間,數學和加密函式等),所有誇儲存引起的功能都在這一層實現,比如:存過,觸發器,檢視等。
mysql基礎架構之查詢語句執行流程
這篇筆記主要記錄mysql的基礎架構,一條查詢語句是如何執行的。 比如,在我們從student表中查詢一個id=2的資訊 select * from student where id=2; 在解釋這條語句執行流程之前,我們看看mysql的基礎架構。 圖來自極客時間的mysql實踐,該圖是描述的是M
1.1 MySQL邏輯架構
mysql 資料庫的邏輯架構如下圖: 第一層所包含的服務並不是MySQL所獨有的技術。它們都是服務於C/S程式或者是這些程式所需要的 :連線處理,身份驗證,安全性等等。 第二層是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL據庫系統處理底層資料之前的所有
MySQL基礎架構
mysql 基本架構示意圖: 聯結器: 負責跟客戶端建立連線、獲取許可權、維持和管理連線。 平常使用中要儘量使用長連線,但是當全部使用長連線後,mysql佔用記憶體會漲的特別快,原因是mysql在執行過程中臨時使用的記憶體是管理在連線 物件裡面的,這些資源會在連線斷
MySQL基礎架構分析
文章已託管到GitHub,大家可以去GitHub檢視閱讀,歡迎老闆們前來Star! 搜尋關注微信公眾號 碼出Offer 領取各種學習資料! MySQL基礎架構 一、引言 我們在學習MySQL的時候,邁入MySQL大門的第一步就是了解並安裝MySQL客戶端,隨後才是使用MySQL做一系列資料庫操作。但是
SQL優化理論基礎:MySQL架構總覽、查詢執行流程、SQL解析順序(轉載)
前言: 一直是想知道一條SQL語句是怎麼被執行的,它執行的順序是怎樣的,然後檢視總結各方資料,就有了下面這一篇博文了。 本文將從MySQL總體架構--->
步步深入MySQL:架構->查詢執行流程->SQL解析順序!
效率 線程 sele 重新 3.2 image 最好 詞條 mysqld 一、前言 本文將從MySQL總體架構--->查詢執行流程--->語句執行順序來探討一下其中的知識。 二、MySQL架構總覽 架構最好看圖,再配上必要的說明文字。 下圖根據參考書籍中一圖為原
MySQL執行原理與基礎架構細說
1.MySQL基礎 MySQL是一個開放原始碼的關係資料庫管理系統。原開發者為瑞典的MySQL AB公司,最早是在2001年MySQL3.23進入到管理員的視野並在之後獲得廣泛的應用。
1.zookeeper基礎知識,結構和執行流程
zookeeper基礎知識 1.單個zookeeper結構 zookeeper結構圖 每個節點都為znode znode分為持久節點(客戶端斷開連線後,仍然存在),臨時節點(斷開連線,節點消失,不允許有子節點),順序節點(持久或臨時,編號用於鎖定和同步中)
步步深入MySQL:架構->查詢執行流程->SQL解析順序!
一、前言 一直是想知道一條SQL語句是怎麼被執行的,它執行的順序是怎樣的,然後檢視總結各方資料,就有了下面這一篇博文了。 本文將從MySQL總體架構--->查詢執行流程--->語句執行順序來探討一下其中的知識。 二、MySQL架構總覽 架構最好看圖,再
MySql 筆記 | MySQL架構總覽->查詢執行流程->SQL解析順序
前言:一直是想知道一條SQL語句是怎麼被執行的,它執行的順序是怎樣的,然後檢視總結各方資料,就有了下面這一篇博文了。本文將從MySQL總體架構—>查詢執行流程—>語句執行順序來探討一下其中的知識。 一、MySQL架構總覽 架構最好看圖,再配上
【搞定MySQL資料庫】第3篇:基礎架構:一條SQL查詢語句是如何執行的?
本文為本人學習極客時間《MySQL實戰45講》的學習筆記。 原文連結:https://time.geekbang.org/column/article/68319 輸入下面一條SQL語句,我們來分析下這條語句在MySQL內部的執行過程。 mysql> select * from T
01|基礎架構:一條查詢語句的執行流程
cti 版本 innodb 語句 -h 分析 查看 執行器 架構模式 1. 基本架構 大體來說,MySQL可以分為Server層和存儲引擎兩部分。 Server層包括鏈接器,分析器,優化器,執行器等,涵蓋大多數核心服務功能,一般跨存儲引擎的功能都在這一層實現
mysql 基礎 -mysqld_safe 啟動執行流程
mysqld_safe指令碼執行的基本流程: 1、查詢basedir和ledir。 2、查詢datadir和my.cnf。 3、對my.cnf做一些檢查,具體檢查哪些選項請看附件中的註釋。 4、解析my.cnf中的組[mysqld]和[mysqld_safe]並和終端裡輸入
[筆記]架構探險-從零開始寫JavaWeb框架-2.1. 之使框架具有aop特性-aop框架載入與切面執行流程分析
囉嗦一句:本筆記只是自己在學習過程中的一些分析和理解,看的人不一定能看懂.如果有興趣還是去買這本書看.筆記就當是另外一種解說好了 在本章節中會學習到如下的技術: 如何理解並使用代理技術 如何使用Spring提供的AOP技術(忽略,太多知識) 如何使
Spring 框架基礎(06):Mvc架構模式簡介,執行流程詳解
本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、SpringMvc框架簡介 1、Mvc設計理念 MVC是一種軟體設計典範,用一種業務邏輯、資料、介面顯示分離的方法組織程式碼,將業務邏輯聚集到一個元件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯,MVC分層有助於管理和架
MySql 基礎學習筆記 1——概述與基本數據類型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的差別 圖 浮點型:命令
where float 函數名 src ron 編碼方式 永遠 -m mas 一、CMD中經常使用mysql相關命令 mysql -D, --database=name //打開數據庫 --delimiter=name //指定分隔符 -h, --host=na
MapReduce架構與執行流程
nbsp 服務 處理 流程 三元 很大的 pre 二次排序 批量 一、MapReduce是用於解決什麽問題的? 每一種技術的出現都是用來解決實際問題的,否則必將是曇花一現,那麽MapReduce是用來解決什麽實際的業務呢? 首先來看一下MapReduce官方定義: 總
nginx負載均衡和mysql主主被動模式基礎架構綜合部署
nginx負載均衡 mysql主從(主主被動互備模式) 1.結構思路 準備用5個虛機,一個虛機安裝nginx來配置負載均衡,兩個虛機做web服務器,另外兩個虛機,安裝mysql,做主主被動配置,每次web只讀取一個mysql服務。 2.具體實施步驟 用vmware最小化安裝5個虛機,我用的是c