Mysql原理決議 - 基本架構
- 1、Mysql的基本架構圖
- 1.1 連接器
- 1.2 查詢快取
- 1.3 分析器
- 1.4 優化器
- 1.5 存盤引擎
1、Mysql的基本架構圖

1.1 連接器
連接器負責跟客戶端建立連接,獲取權限、維持和管理連接
– 用戶名密碼驗證
– 查詢權限資訊,分配對應的權限
– 可以使用show processlist查看現在的連接
– 如果太長時間沒有動靜,就會自動斷開,通過wait_timeout控制,默認8小時
? 連接可以分為兩類:
– 長連接:推薦使用,但是要周期性的斷開長連接
– 短鏈接:
1.2 查詢快取
當執行查詢陳述句的時候,會先去查詢快取中查看結果
之前執行過的sql陳述句及其結果可能以key-value的形式存盤在快取中
如果能找到則直接回傳,如果找不到,就繼續執行后續的階段,
? 但是,不推薦使用查詢快取:
– 1、查詢快取的失效比較頻繁,只要表更新,快取就會清空
– 2、快取對應新更新的資料命中率比較低
1.3 分析器
詞法分析:Mysql需要把輸入的sql字串進行識別,決議每個部分代表什么意思
– 把字串 T 識別成 表名 T – 把字串 ID 識別成 列ID
? 語法分析:
? 根據語法規則判斷這個sql陳述句是否滿足mysql的語法,如果不符合就會報錯“You have an error in your SQL synta”
1.4 優化器
在具體執行SQL陳述句之前,要先經過優化器的處理
– 當表中有多個索引的時候,決定用哪個索引
– 當sql陳述句需要做多表關聯的時候,決定表的連接順序
– 等等
? 不同的執行方式對SQL陳述句的執行效率影響很大
– RBO:基于規則的優化
– CBO:基于成本的優化
1.5 存盤引擎

ibdata:innodb默認情況下,所有的資料檔案的表空間 --> 修改如下
innodb將每一個表的資料,單獨使用一份資料檔案保存

db.opt:每一個資料庫的結構檔案

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/258925.html
標籤:其他
