Innodb引擎:MySQL5.5之后的默认存储引擎。
特点:
- 具有提交(Commit)、回滚(Rollback)、崩溃恢复能力的事务安全
- 提供了行级锁和外键约束
- 没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表
MyIASM引擎 :MySQL5.5之前的默认存储引擎,
特点:
-
不支持数据库事务,也不支持行级锁和外键,因此当INSERT(插入)或UPDATE(更新)数据时即写操作需要锁定整个表,效率便会低一些。
-
MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。
-
访问(SELECT)速度快
如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择
MEMORY引擎
MEMORY存储引擎是用保存在内存中的数据来创建表,每个memory表对应一个磁盘文件。格式是.frm
特点:由于他的数据是存放在内存中的,并且默认使用HASH索引,所以它的访问速度特别快,同时也造成了他的缺点,就是数据库服务一旦关闭,数据就会丢失,另外对表的大小有限制
每个memary表中可存储数据量的大小,受到max_heap_table_size变量的约束,他的初始值是16MB,可以在定义Memary表的时候通过max_rows指定表的最大行数
主要区别
- 1、MyIASM是非事务安全的,而InnoDB是事务安全的
- 2、MyIASM锁的粒度是表级的,而InnoDB支持行级锁
- 3、MyIASM支持全文类型索引,而InnoDB不支持全文索引
- 4、MyIASM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyIASM
- 5、MyIASM表保存成文件形式,跨平台使用更加方便
- 6、InnoDB写的处理效率差一点,并且会占用更多的磁盘空间来存储数据和索引

应用场景:
-
InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
-
MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。
如果应用的完整性、并发性要求比 较低,也可以使用。 -
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。比如,作为统计操作的中间结果表,便于利用它速率快的优势高效的对中间结果进分析。
注意,同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。
网友评论