數(shù)據(jù)庫和實例
數(shù)據(jù)庫:物理操作系統(tǒng)文件或其他形式文件類型的集合惕稻。
實例:MySQL數(shù)據(jù)庫由后臺線程以及一個共享內(nèi)存區(qū)組成绞呈。
在MySQL數(shù)據(jù)庫中兔毙,實例與數(shù)據(jù)庫的關(guān)系通常是一一對應(yīng)的柠辞,即一個實例對應(yīng)一個數(shù)據(jù)庫尘颓,一個數(shù)據(jù)庫對應(yīng)一個實例走触。但在集群情況下,可能存在一個數(shù)據(jù)庫被多個數(shù)據(jù)實例使用的情況疤苹。
MySQL被設(shè)計為一個單進程多線程架構(gòu)的數(shù)據(jù)庫互广,MySQL數(shù)據(jù)庫實例在系統(tǒng)上的表現(xiàn)就是一個進程。
MySQL結(jié)構(gòu)體系
MySQL 由以下幾部分組成:
1.連接池組件
2.管理服務(wù)和工具組件
3.SQL接口組件
4.查詢分析器組件
5.優(yōu)化器組件
6.緩沖組件
7.插件式存儲引擎
8.物理文件
MySQL區(qū)別于其他數(shù)據(jù)庫的最重要的一個特點就是其插件式的表存儲引擎卧土。MySQL插件式的存儲引擎架構(gòu)提供了一系列標(biāo)準(zhǔn)的管理和服務(wù)支持惫皱。這些標(biāo)準(zhǔn)與存儲引擎本身無關(guān),可能是每個數(shù)據(jù)庫系統(tǒng)本身都必需的尤莺,如SQL分析器和優(yōu)化器等旅敷,而存儲引擎是底層物理結(jié)構(gòu)的實現(xiàn)。
需要特別注意的是:存儲引擎是基于表的颤霎,而不是數(shù)據(jù)庫媳谁。所以當(dāng)我們在建表的時候,需要標(biāo)注使用的存儲引擎友酱,否則數(shù)據(jù)庫系統(tǒng)會選用默認(rèn)的配置晴音。
MySQL存儲引擎
MySQL數(shù)據(jù)庫的核心在于存儲引擎。
1)InnoDB存儲引擎
InnoDB存儲引擎支持事務(wù)粹污,其設(shè)計目標(biāo)主要面向在線事務(wù)處理(OLTP)的應(yīng)用段多。其特點是行鎖設(shè)計,支持外接壮吩,并支持類似于Oracle的非鎖定讀进苍,即默認(rèn)讀取操作不會產(chǎn)生鎖。從MySQL5.5.8開始鸭叙,InnoDB存儲引擎是默認(rèn)的存儲引擎觉啊。
2)MyISAM引擎
MyISAM不支持事務(wù),表鎖設(shè)計沈贝,支持全文索引杠人,主要面向一些OLAP數(shù)據(jù)庫應(yīng)用。
可以通過SHOW ENGINES語句查看當(dāng)前使用的MySQL數(shù)據(jù)庫所支持的引擎,或者通過查找information_schema架構(gòu)下的ENGINES表