1、總述
MySQL可以分為Server層和存盤引擎層

Server層: 包括大多數 MySQL 中的核心功能,所有跨存盤引擎的功能也在這一層實作,包括存盤程序、觸發器、視圖等,
存盤引擎層: 包括 MySQL 常見的存盤引擎(MyISAM、InnoDB和Memory 等),最常用的是InnoDB,也是現在MySQL的默認存盤引擎,存盤引擎也可以在創建表的時候手動指定,
2、連接器
用于連接用戶和MySQL資料庫,
1、用戶發起連接(mysql -u 用戶名 -p 密碼);
2、連接器會根據用戶輸入的用戶名和密碼驗證你的登錄身份;
3、根據權限表中的記錄來判定用戶的權限,
3、查詢快取
以key-value 對的形式存盤以前執行過的陳述句及結果;被直接放到記憶體中,可以直接回傳結果,
key: 查詢陳述句
value: 查詢結果
注: 不建議使用;因為只要在 MySQL 中對某一張表執行了更新操作,那么所有的查詢快取就會失效,對于更新頻繁的資料庫來說,查詢快取的命中率很低,
4、分析器
用于對SQL陳述句的詞法分析和語法分析,
詞法分析: 決議SQL陳述句,識別其中的關鍵字,字串,空格;
語法分析: 對詞法分析的結果,進行分析,判斷SQL陳述句是否符合MySQL語法,
5、優化器
根據資料庫統計資訊、索引等,選擇出一種效率更高的執行方案,
6、執行器
1、判斷是否有執行這條陳述句的權限
2、執行器就會根據表的引擎定義,去使用這個引擎提供的介面,
7、SQL陳述句執行順序

WHERE 和 ON 的區別
如果有外部列,ON 針對過濾的是關聯表,主表(保留表)會回傳所有的列;如果沒有添加外部列,兩者的效果是一樣的;
對主表的過濾應該使用 WHERE;對于關聯表,先條件查詢后連接則用 ON,先連接后條件查詢則用 WHERE;
8、臨時表
MySQL 在執行 SQL 陳述句的程序中,通常會臨時創建一些存盤中間結果集的表,臨時表只對當前連接可見,在連接關閉時,臨時表會被洗掉并釋放所有表空間,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/272208.html
標籤:其他
上一篇:【Spring MVC】 (第一篇)概述 + 專案實體(配置版)+ 具體步驟 + 流程原理的分析,附:/ 與 /* 的區別
