mysql數據庫體系結構圖:mysql
網上找的很容易理解,掌握其結構仍是頗有必要的,有助於咱們的對mysql深刻理解和優化sql
mysql由如下幾個部分組成:數據庫
一、鏈接池組件,如鏈接數量限制,線程數量,內存檢測緩存
二、管理服務和工具組件 安全
三、SQL接口組件-執行器執行DML,DDL,視圖,觸發器等併發
四、查詢分析解析器組件-分析查詢語句工具
五、優化器組件-主要對查詢作優化優化
六、緩衝組件spa
七、插入式存儲引擎.net
八、物理文件
鏈接池組件
管理緩衝,線程鏈接等緩存需求,用戶驗證等。
管理服務和工具組件
系統管理與控制,另一些數據庫工具使用也在這裏 如mysql 啓動,導出,關閉等,數據庫系統自身管理
解析器組件
主要是解析查詢語句,造成解析樹,解析過程是這樣的:
(1)分析語法是否正確
(2)查詢緩存,若是緩存中有就直接返回結果,不作優優化器步驟
優化器組件
優化器主要是對查詢作優化,數據的讀取方式,索引使用方式,每每咱們作SQL查詢優化會對直接影響優化器組件解析SQL,他採用的是「選取-投影-關聯」的方式進行查詢的,例如:select user_id,user_name from user where mobile=xxxxx,這個語句首先執行where 後面的語句進行篩選,而不是將表中全部數據查詢出來再過濾 ,其次是將user_id,user_name 進行投影,選取這兩個字段,而不是將全部的字段取出再進行過濾,最後將兩個結果進行關聯。
緩存組件
緩存有buffer和cache,他們之間的區別詳見:http://blog.csdn.net/caoshuming_500/article/details/7332561;
存在一個命中率問題,當查詢語句時會先走緩存組件,若是沒有再去查訓數據文件。他有多種分類有表緩存,記錄緩存,key緩存等
存儲引擎
他主要和數據庫物理文件打交道,查詢,增長,刪除,修改物理文件,如今有不少種存儲引擎,各個存儲引擎的優點各不同,最經常使用的MyISAM,InnoDB,BDB,他們各自有各自的特色,如 InnoDB支持事務
上圖中提到鎖的管理,首先要明白鎖的由來是爲了支持併發保證數據的安全,如在查詢的同時也在修改數據這樣會出現我查詢到的結果不對,請去理解髒讀和歡讀,通常經常使用的鎖有共享鎖和排他鎖,按照鎖的粒度又分爲:表鎖,行鎖,死鎖