MySQL引擎之Memory
Memory存储引擎也称HEAP存储引擎,所有的数据都保存在内存中,如果MySQL服务重启,数据将会丢失,但是表的结构会保存下来
功能特点
- 支持HASH索引和BTree索引(默认HASH索引)
- 所有字段都为固定长度,例如
varchar(10)=char(10)
- 不支持BLOB和TEXT等大字段
- Memory存储引擎使用表级锁
如何选择存储引擎
- 如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
- 如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
- 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
- 大部分情况下,InnoDB是正确的选择,可以简单地归纳为一句话“除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择InnoDB引擎
- 参考条件
- 事务
如果应用需要事务支持,那么InnoDB(或者XtraDB)是目前最稳定并且经过验证的选择 - 备份
如果可以定期地关闭服务器来执行备份,那么备份的因素可以忽略。反之,如果需要在线热备份,那么选择InnoDB就是基本的要求 - 崩溃恢复
MyISAM崩溃后发生损坏的概率比InnoDB要高很多,而且恢复速度也要慢
- 事务
- 参考条件
应用举例
• 日志型应用 —— 用MyISAM
• 只读或者大部分情况下只读的表 —— 用MyISAM
• 订单处理 —— 用InnoDB