1、MyISAM表引擎特点
(1)MyISAM 是MySQL缺省存贮引擎
(2)具有检查和修复表格的大多数工具.
(3)表格可以被压缩
(4)支持全文搜索.
(5)不是事务安全的.如果事物回滚将造成不完全回滚,不具有原子性。
(6)不支持外键。
(7)如果执行大量的SELECT,MyISAM是更好的选择。
(8)每张MyISAM 表被存放在三个文件 :frm 文件存放表格定义,数据文件是MYD (MYData),索引文件是MYI (MYIndex) 引伸。
(9)表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦
(10)较好的键统计分布
(11)较好的auto_increment处理
总结:
读取操作在效率上要优于InnoDB.小型应用使用MyISAM是不错的选择.并发性弱于InnoDB。
2、innodb表引擎特点
(1)提供了具有事务提交、回滚和崩溃修复能力的事务安全型表。(2)提供了行锁,提供与 Oracle 类型一致的不加锁读取。
(3)表中不需要扩大锁定,因为 InnoDB 的列锁定适宜非常小的空间。
(4)提供外键约束。
(5)设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。
(6)在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
(7)把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在MyISAM 中,表被存放在单独的文件中。
(8)表的大小只受限于操作系统的文件大小,一般为 2 GB。
(9)所有的表都保存在同一个数据文件 ibdata1 中(也可能是使用独立的表空间文件的多个文件,使用共享表空间时比较不好备份单独的表),免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。
总结:
这些特性均提高了多用户并发操作的性能表现。
注意:
对于支持事物的InnoDB类型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。即使autocommit打开也可以,可以在执行sql前调用begin,多条sql形成一个事务;或者不打开AUTOCOMMIT配置,将大大提高性能。
3、MyISAM表和InnoDB表差别
(