數(shù)據(jù)庫(kù):
物理操作系統(tǒng)文件或其他形式文件類型的集合。數(shù)據(jù)庫(kù)文件可以是frm、MYD、ibd 結(jié)尾的文件。
從概念上來說,數(shù)據(jù)庫(kù)是文件的集合,是依照某種數(shù)據(jù)模型組織起來并存放于二級(jí)存儲(chǔ)器的數(shù)據(jù)集合;
實(shí)例:
MySQL數(shù)據(jù)庫(kù)由后臺(tái)進(jìn)程以及一個(gè)共享內(nèi)存區(qū)組成。共享內(nèi)存可以被運(yùn)行的后臺(tái)線程所共享。 需要注意的是,數(shù)據(jù)庫(kù)實(shí)例才是真正用于操作數(shù)據(jù)庫(kù)文件的。
從概念上來說,數(shù)據(jù)庫(kù)實(shí)例是程序,是位于用戶于操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,用戶對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的任何操作,包括數(shù)據(jù)庫(kù)定義、數(shù)據(jù)查詢等都在實(shí)例下進(jìn)行,應(yīng)用程序只有通過數(shù)據(jù)庫(kù)實(shí)例才能和數(shù)據(jù)庫(kù)打交道。
PS:MySQL是一個(gè)單進(jìn)程多線程架構(gòu)的數(shù)據(jù)庫(kù)。也就是說MySQL數(shù)據(jù)庫(kù)實(shí)例在系統(tǒng)中表現(xiàn)形式就是一個(gè)進(jìn)程。
二、MySQL體系結(jié)構(gòu)
根據(jù)上圖可以看出,MySQL由以下幾個(gè)部分組成:
1. 連接池組建
2. 管理服務(wù)和工具組建
3. SQL接口組件(SQL Interface)
4. 查詢分析器(Parser)
5. 優(yōu)化器組件(Optimizer)
6. 緩沖組件(Cache & Buffer)
7. 插件式存儲(chǔ)引擎(Pluggable Storage Engines)
8. 物理文件 (File Sysgtem & Logs)
三、MySQL存儲(chǔ)引擎
MySQL與其他數(shù)據(jù)庫(kù)對(duì)比等一大特點(diǎn)就是獨(dú)有的插件式體系結(jié)構(gòu),而每存儲(chǔ)引擎都有各自的特點(diǎn),能夠根據(jù)具體的業(yè)務(wù)或者應(yīng)用場(chǎng)景建立不同的存儲(chǔ)引擎表。
下面簡(jiǎn)單的介紹以下MySQL幾款常見的存儲(chǔ)引擎:
1、InnoDB存儲(chǔ)引擎:
InnoDB存儲(chǔ)引擎支持事務(wù),設(shè)計(jì)目標(biāo)主要面向OLTP應(yīng)用,特點(diǎn)是行鎖設(shè)計(jì)、支持外鍵。PS:MySQL5.6+開始支持全文索引。
2、MyISAM存儲(chǔ)引擎:
MyISAM存儲(chǔ)引擎不支持事務(wù)、表鎖設(shè)計(jì),支持全文索引,主要面向一些OLAP數(shù)據(jù)庫(kù)應(yīng)用。
3、NDB存儲(chǔ)引擎:
NDB存儲(chǔ)引擎是一款集群存儲(chǔ)引擎,特點(diǎn)是將數(shù)據(jù)全部放在內(nèi)存中(MySQL5.1+開始可以將非索引數(shù)據(jù)放在磁盤上)因此主鍵查找的數(shù)據(jù)快,通過添加數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),可以線性的提高數(shù)據(jù)庫(kù)性能,是高可用,高性能的集群系統(tǒng)。
4、Memory存儲(chǔ)引擎:
Memory存儲(chǔ)引擎將表中所有的數(shù)據(jù)放置內(nèi)存中,如果數(shù)據(jù)庫(kù)重啟或者崩潰,數(shù)據(jù)將消失。Memory所有默認(rèn)使用哈希索引。
5、Archive存儲(chǔ)引擎:
只支持insert 和 select操作, 使用zlib算法將數(shù)據(jù)行(row)壓縮存儲(chǔ)。 非常適合存儲(chǔ)歸檔數(shù)據(jù),如日志信息。
6、Federated
7、Maria
……