MySQL存儲引擎采用了可插拔的結構,即使用者可以根據自己的需要來選擇不同的存儲引擎。
下表是MySQL不同的存儲引擎的不同的特性:
<b>Feature</b>
<b>MyISAM</b>
<b>BDB</b>
<b>Memory</b>
<b>InnoDB</b>
<b>Archive</b>
<b>NDB</b>
Storage limits
256TB
No
Yes
64TB
384EB[4]
Transactions
Locking granularity
Table
Page
Row
MVCC (snapshot read)
Geospatial support
Yes[1]
B-tree indexes
Hash indexes
Full-text search indexes
Clustered indexes
Data caches
N/A
Index caches
Compressed data
Encrypted data[2]
Cluster database support
Replication support[3]
Foreign key support
Backup / point-in-time recovery[3]
Query cache support
Update statistics for data dictionary
下面列舉幾個常用的存儲引擎:
l MyISAM:MySQL預設的存儲引擎,它主要用于大多數的Web、資料倉庫和其它應用中。可以通過資料庫配置檔案中的storage_engine選項來改變預設的存儲引擎。
l InnoDB:主要用于事務處理應用,并且支援事務的ACID特性和外鍵。
l BDB:支援COMMIT,ROLLBACK和其它事務特性。
在建立表或修改表的時候,都可以指定需要使用的存儲引擎:
InnoDBBDBInnoDB
InnoDBMVCCCOMMIT, ROLLBACKsvepoints
BDBCOMMITROLLBACK
MySQLInnoDB
InnoDBInnoDBInnoDBMyISAM
InnoDBrowid
InnoDB
l S
l X
T1t
l T2tST1T2tS
l T2tX
T1tXt
l ISTTS
l IXTTX
l SIS
l XIX
1,0
X
IX
S
IS
1
InnoDBREPEATABLE READInnoDBSQL
InnoDBSELECT
REPEATABLE READ
DROP TABLE ALTER TABLEDROP TABLEMYSQLALTER TABLEMYSQL
<b>Next-Key Locking</b>
InnoDBnext-key lockingSX
InnoDBgapRSXR
InnoDB6-byte7-byte(roll pointer)undoundo
InnoDBundo
undoInnoDB
undo
本文轉自holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/370158