Mysql的存储引擎

mysql5.1里包含了好几种存储引擎(Storage Engine )。性能各有千秋,究竟哪个才是您需要的?

功能列表:


MyISAM BDB Memory InnoDB Archive NDB
最大数据 256TB No Yes 64TB No 384EB[4]
事务处理 No Yes No Yes No Yes
锁定级别 Table Page Table Row Row Row
读取快照 No No No Yes Yes No
特殊类型字段支持 Yes Yes[1] No Yes[1] Yes[1] Yes[1]
B-tree 索引 Yes Yes Yes Yes No Yes
哈西索引 No No Yes No No Yes
全文搜索 Yes No No No No No
集群索引 No Yes No Yes No No
数据缓存 No Yes N/A Yes No Yes
索引缓存 Yes Yes N/A Yes No Yes
压缩数据 Yes No No No Yes No
加密[2] Yes Yes Yes Yes Yes Yes
集群数据库 No No No No No Yes
复制支持[3] Yes Yes Yes Yes Yes Yes
外键支持 No No No Yes No No
热备份热恢复[3] Yes Yes Yes Yes Yes Yes
结果缓存支持 Yes Yes Yes Yes Yes Yes
字典更新统计 Yes Yes Yes Yes Yes Yes

注:

[1]支持特殊的数据类型,但不可作为索引
[2] 通过编程在服务器执行,效果远胜于在存储引擎中执行
[3] 在服务器内执行,远胜过在存储引擎中执行
[4] EB = 1024 * 1024TB

其中最常用的非MyISAM莫数。也是mysql下功夫最多的一个引擎了,几乎所有的参数都可以调节。速度超快,适合存储网页数据。类似的还有一个ISAM引擎,但就我看来,它不过是MyISAM的前身为了保证兼容性保留下来的。

Memory首次接触是将php的seesion保存在数据库中,Memory顾名思义,将所有数据保存在内存中,访问速度有所提高,当然关机后数据消失。感觉这个引擎更加体现了mysql的“裸奔原则”,为了速度,能丢弃的全部丢弃。

InnoDB因为有了事务处理和外键支持,很适合做企业数据库。但说老实话,他的速度实在叫人提不起兴趣。支持COMMIT, ROLLBACK, 和 savepoints.

BDB,很接近于InnoDB,支持
RCOMMITROLLBACK 操作

NDB,如果你的mysql不得不作集群,这也是不得不选择的引擎。

一个数据库中每个表都可以用不同的引擎,你可以使用“CREATE TABLE engineTest (id INT) ENGINE = MyISAM;” 的方式来创建一个表,同时也可以使用“ALTER TABLE engineTest ENGINE = ARCHIVE;”的方式改变一个表的属性。

anyShare分享到:
          

  1. No comments yet.
(will not be published)
*