基礎篇-MySql數據庫體系結構

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支持事務

上圖中提到鎖的管理,首先要明白鎖的由來是爲了支持併發保證數據的安全,如在查詢的同時也在修改數據這樣會出現我查詢到的結果不對,請去理解髒讀和歡讀,通常經常使用的鎖有共享鎖和排他鎖,按照鎖的粒度又分爲:表鎖,行鎖,死鎖

相關文章
相關標籤/搜索