1 MySQL體系結構
1.1 數據庫與數據庫實例
數據庫:物理操作系統中的文件和其他文件類型的集合,除了硬盤存儲的文件,也可以是存放在內存中的文件
數據庫實例:有數據庫后臺進程、線程以及一個共享內存區域組成,共享內存可以被后臺進程/線程所共享,是應用程序,位于用戶與操作系統直接的數據管理軟件
注意:不能通過修改二進制文件來更改數據庫內容,僅可以通過數據庫實例操作數據庫。在MySQL中,實例與數據庫是一一對應的,但在集群環境下會發生一個數據庫被多個實例調用的情況。
??
MySQL由以下組件構成:
連接池組件
管理服務與工具組件
SQL接口組件
查詢分析器組件
優化器組件
緩存組件
插件式存儲引擎
物理文件
MySQL的重要特點是其插件式存儲引擎,提供了一系列標準的管理和服務支持,這些標準與存儲引擎本身無關,可能是數據庫系統本身所必需的,如SQL分析器和優化器等,而存儲引擎是底層物理結構的實現,此外,存儲引擎是基于表的,而不是數據庫
2 常見的存儲引擎
2.1 InnoDB存儲引擎
InnoDB存儲引擎支持事務,是面向在線事務處理方面的應用,支持行鎖、外鍵,支持類似Oracle的非鎖定讀,默認情況讀取操作不會產生鎖,在MySQL5.1版本之后被設定成默認存儲引擎,此前是MyISAM
InnoDB存儲引擎將數據放在一個邏輯表空間,由InnoDB自身進行管理,將每個InnoDB存儲的表單獨放在一個獨立的ibd文件中,同樣也可以使用裸設備(row disk)建立表空間
InnoDB使用多版本并發控制(MVCC)獲得高并發性,實現了SQL標準的4種隔離級別,默認使用的是REPEATABLE READ(可重復讀)級別,此外還提供了插入緩沖、預讀、二次寫、自適應哈希索引、預讀等高性能和高可用的功能
針對表數據的存儲,InnoDB存儲引擎采用了聚集(clustered)的方式,每張表的存儲按照主鍵的順序存放,如果沒有顯式地指定主鍵,InnoDB將為每一行生成一個6字節的ROWID作為主鍵