MyISAM 是MySQL的默认存储引擎。
MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务完整性没有要求或者以 SELECT、INSERT 为主的应用基本上都可以使用这个引擎来创建表。
要明确表示你想要用一个MyISAM表格,请用ENGINE表选项指出来:
CREATE TABLE t (i INT) ENGINE = MYISAM;
MyISAM 的表又支持 3 种不同的存储格式,分别是:
静态(固定长度):
优点:分配快、缓存快
缺点:浪费
动态表:
优点:暂时没看出有啥好处
缺点:频繁地更新删除记录会产生碎片,需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难。
已压缩表:
优点:小
缺点:myisampack工具创建的只读格式
注:当mysql进程在写中间被杀掉或者其他故障时,MyISAM不易被恢复,不建议使用。
========================================================
InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。
但是对比 MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。(俗话说的好,有得必有失~)