MyISAM和InnoDB区别

a、myisam 和 innodb 的区别

1.是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。

2.是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。

3.是否支持外键: MyISAM不支持,而InnoDB支持。

4.是否支持MVCC :仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。

5.innodb 主键索引使用的是聚餐索引。

6.5.7 以前InnoDB 不支持全文索引,5.7以后的InnoDB支持全文索引了。

7.InnoDB 不保存表的具体行数,执行select count(*) from table时需要全表扫描。

8.Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI

Innodb:frm是表定义文件,ibd是数据文件
Myisam:frm是表定义文件,myd是数据文件,myi是索引文件

9.myisam 索引是堆表,innodb 索引是索引组织表.

b、选择

Myisam : 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎. ,比如 bbs 中的 发帖表,回复表。

INNODB : 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表。

c、引擎汇总区别

posted @ 2020-02-29 16:24  liuxinyu123  阅读(38)  评论(0)    收藏  举报