由於圖可以看出,mysql由以下部分組成:
連線池元件
管理服務和工具元件
sql介面元件
查詢分析器元件
優化器元件
緩衝(cache)元件
外掛程式式儲存引擎
物理檔案
需要特別注意的是,儲存引擎是基於表的,而不是資料庫。
幾種儲存引擎介紹
innodb儲存引擎
b. innodb通過多版本併發控制(mvcc)來獲得高併發性,並且實現了sql標準的4種隔離級別,預設為repeatable級別。使用next-key locking的策略來避免幻讀(phantom)現象的產生。
c. innodb儲存引擎提供了插入快取(insert buffer)- 隨著後續演進變為change buffer、二次寫(double write)、自適應雜湊(adaptive hash index)、預讀(read ahead)等高效能和高可用的功能。
d. 對於表中資料的儲存,innodb儲存引擎採用了聚集(clustered)的方式,因此每張表的儲存都是按主鍵的順序進行存放的。如果沒有顯示地在表定義時指定主鍵,innodb儲存引擎會為每一行生成乙個6位元組的rowid,並以此作為主鍵。
myisam儲存引擎
a. myisam儲存引擎不支援事務、表鎖設計,支援全文檢索,主要面向一些olap資料庫應用。
b. myisam儲存引擎的緩衝池只快取(cache)索引檔案,而不是快取資料檔案,這點和大多數的資料庫都非常不同。
c. myisam儲存引擎表由myd和myi組成。myd放資料檔案,myi放索引檔案。
ndb儲存引擎
ndb儲存引擎是乙個集群儲存引擎,類似於oracle的rac集群,不過與rac share everything 架構不同的是,其結構是share nothing 的集群架構,因此能提供更高的可用性。ndb的特點是資料全部放在記憶體中(從mysql5.1版本開始,可以將非索引資料放在磁碟上),因此主鍵查詢(primary key lookups)的速度極快,並且通過新增ndb資料儲存節點(data node)可以線性地提高資料庫效能,是高可用、高效能的集群系統。
關於ndb儲存引擎,有乙個問題值得注意,那就是ndb儲存引擎的連線操作(join)是在mysql資料庫層完成的,而不是在儲存引擎層完成的。這意味著,複雜的連線操作需要巨大的網路開銷,因此查詢速度很慢。如果解決這個問題,ndb儲存引擎的市場應該是非常巨大的。
memory儲存引擎
memory儲存引擎(之前稱heap儲存引擎)將表中的資料存放在記憶體中,如果資料庫重啟或發生崩潰,表中的資料都將消失。非常適用於儲存臨時資料的臨時表,以及資料倉儲中的緯度表。memory儲存引擎預設使用雜湊索引,而不是b+樹索引。
mysql資料庫使用memory儲存引擎作為臨時表來存放查詢的結果集(intermediate result)。如果中間結果集大於memory儲存引擎表的容量設定,有或者中間結果含有text或blob列型別字段,則mysql資料庫會把其轉換到myisam儲存引擎表而存放到磁碟中。之前提到myisam不快取資料檔案,因此這時產生的臨時表的效能對於查詢會有損失。
archive儲存引擎
archive儲存引擎只支援insert和select操作,從mysql5.1開始支援索引。archive儲存引擎使用zlib演算法將資料行(row)進行壓縮後儲存,壓縮比一般可達1:10。
正如其名字所示,archive非常適合儲存歸檔資料,如日誌資訊。
archive儲存引擎使用行鎖來實現高併發的插入操作,但是其本身並不是事務安全的儲存引擎,其設計目標主要是提供高速的插入和壓縮功能。
federated儲存引擎
federated儲存引擎表並不存放資料,它只是指向一台遠端mysql資料庫伺服器上表。類似於sql server的鏈結伺服器和oracle的透明閘道器。不同的是當前federated儲存引擎只支援mysql資料庫表,不支援異構資料庫表。
maria儲存引擎
新開發的引擎,設計目標主要是用來取代原有的myisam儲存引擎,從而成為mysql預設的儲存引擎。
特點:支援快取資料和索引檔案,應用了行鎖設計,提供mvcc功能,支援事務和非事務安全的選項,以及更好的blob字元型別的處理效能。
其他儲存引擎
merge、csv、sphinx和infobright等
mysql 體系結構 了解MySQL體系結構
mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...
簡述mysql體系結構 MySQL體系結構
一 mysql登入方式 一 tcp ip方式 遠端 本地 mysql uroot poldboy123 h 10.0.0.51 p3306 二 socket方式 mysql uroot poldboy123 s tmp mysql.sock 二 例項介紹 例項 mysqld後台守護程序 主線程 ma...
MySQL體系結構
了解mysql必須牢牢記住其體系結構圖,mysql是由sql介面,解析器,優化器,快取,儲存引擎組成的 1 connectors指的是不同語言中與sql的互動 2 management serveices utilities 系統管理和控制工具 3 connection pool 連線池。管理緩衝使...