1. 程式人生 > >MySQL體系結構和存儲引擎概述

MySQL體系結構和存儲引擎概述

管理軟件 文件 提高 數據存儲 系統 數據庫實例 sel 技術 bubuko

一、定義數據庫和實例

數據庫:

物理操作系統文件或其他形式文件類型的集合。數據庫文件可以是frm、MYD、ibd 結尾的文件。

從概念上來說,數據庫是文件的集合,是依照某種數據模型組織起來並存放於二級存儲器的數據集合;

實例:

MySQL數據庫由後臺進程以及一個共享內存區組成。共享內存可以被運行的後臺線程所共享。 需要註意的是,數據庫實例才是真正用於操作數據庫文件的。

從概念上來說,數據庫實例是程序,是位於用戶於操作系統之間的一層數據管理軟件,用戶對數據庫數據的任何操作,包括數據庫定義、數據查詢等都在實例下進行,應用程序只有通過數據庫實例才能和數據庫打交道。

PS:MySQL是一個單進程多線程架構的數據庫。也就是說MySQL數據庫實例在系統中表現形式就是一個進程。

二、MySQL體系結構

技術分享圖片

根據上圖可以看出,MySQL由以下幾個部分組成:

1. 連接池組建

2. 管理服務和工具組建

3. SQL接口組件(SQL Interface)

4. 查詢分析器(Parser)

5. 優化器組件(Optimizer)

6. 緩沖組件(Cache & Buffer)

7. 插件式存儲引擎(Pluggable Storage Engines)

8. 物理文件 (File Sysgtem & Logs)

三、MySQL存儲引擎

MySQL與其他數據庫對比等一大特點就是獨有的插件式體系結構,而每存儲引擎都有各自的特點,能夠根據具體的業務或者應用場景建立不同的存儲引擎表。

下面簡單的介紹以下MySQL幾款常見的存儲引擎:

1、InnoDB存儲引擎:

InnoDB存儲引擎支持事務,設計目標主要面向OLTP應用,特點是行鎖設計、支持外鍵。PS:MySQL5.6+開始支持全文索引。

2、MyISAM存儲引擎:

MyISAM存儲引擎不支持事務、表鎖設計,支持全文索引,主要面向一些OLAP數據庫應用。

3、NDB存儲引擎:

NDB存儲引擎是一款集群存儲引擎,特點是將數據全部放在內存中(MySQL5.1+開始可以將非索引數據放在磁盤上)因此主鍵查找的數據快,通過添加數據存儲節點,可以線性的提高數據庫性能,是高可用,高性能的集群系統。

4、Memory存儲引擎:

Memory存儲引擎將表中所有的數據放置內存中,如果數據庫重啟或者崩潰,數據將消失。Memory所有默認使用哈希索引。

5、Archive存儲引擎:

只支持insert 和 select操作, 使用zlib算法將數據行(row)壓縮存儲。 非常適合存儲歸檔數據,如日誌信息。

6、Federated

7、Maria

……

MySQL體系結構和存儲引擎概述