MyISAM
MyISAM表独立于操作系统的,可以轻松移植,建立一个myisam引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名。(tb_demo.frm存储表定义,tb_demo_MYD,存储数据,tb_demo.MYI,存储索引。)
它无法处理事务。
适用情况
1.选择密集型的表
2.插入密集型的表
InnoDB
InnoDB是一个健壮的事务型存储引擎,它还引入了行级锁定和外键约束。
适用情况
1.更新密集的表
2.事务处理
3.自动灾难恢复
4.外键约束
5.支持自动增加列AUTO_INCREMENT属性
Memory
Memory存储引擎显著的特点就是速度。采用的逻辑存储介质是系统内存。虽然在内存存储会很快,但是当mysqld守护进程崩溃是,所有的memory数据会丢失。它要求存储在里面的数据使用的是长度不变的格式,这就不能使用BLOB和TEXT这样的长度可变的数据类型.VARCHAR是一种长度可变的类型,但因为它在MySQL中当做CHAR来用,所以可以使用。
适用情况
1.目标数据较小,而且频繁的访问。
2.数据是临时的,要求必须立即可用。
3.存储在memory表中的数据如果突然丢失,不会对服务产生实质的影响。
Merge
Merge表就是几个相同MyISAM表的聚合器;Merge表中并没有数据,对Merge类型的表可以进行查询、更新、删除操作,这些操作实际上是对内部MyISAM表进行操作。
适用情况
对于服务器日志这种信息,一般常用的存储策略是将数据分成很多表,每个名称与特定的时间端相关。
Archive
Archive是归档的意思,在归档之后很多的高级功能就不再支持了,仅仅支持最基本的插入和查询两种功能。在MySQL 5.5版以前,Archive是不支持索引,但是在MySQL 5.5以后的版本中就开始支持索引了。Archive拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩,所以它经常被用来当做仓库使用。
1.如何查看服务器有哪些存储引擎可以使用?
show engines;
2.如何选择合适的存储引擎?
(1)选择标准可以分为:
(2)是否需要支持事务;
(3)是否需要使用热备;
(4)崩溃恢复:能否接受崩溃;
(5)是否需要外键支持;