數據庫:
物理操作系統文件或其他形式文件類型的集合。數據庫文件可以是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
……