myisam和innodb的区别?

什么是Innodb?

InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。
它是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务处理的能力,也是其他存储引擎不能比拟的。
靠后版本的MySQL的默认存储引擎就是InnoDB。

InnoDB的优点:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交和回滚。

什么是Myisam?

myisam是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。
基于myisam存储引擎的表支持3种不同的存储格式。包括静态型、动态型和压缩型。其中,静态型是myisam的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;压缩型需要用到myisampack工具,占用的磁盘空间较小。

myisam的优势在于占用空间小,处理速度快。

myisam的优点:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择myisam能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。

两者的区别:

(1)[事务]myisam是非事务安全型的,而InnoDB是事务安全型的。
(2)[锁]myisam锁的粒度是表级,而InnoDB支持行级锁定。
(3)[全文索引]myisam支持全文类型索引,而InnoDB不支持全文索引(5.7之前)。
(4)[查询效率]myisam相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用myisam。
(5)[外健]myisam不支持外健,InnoDB支持。
(6) myisam表是保存成文件的形式,在跨平台的数据转移中使用myisam存储会省去不少的麻烦。

猜你喜欢

转载自blog.csdn.net/weixin_42416543/article/details/89818520