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