InnoDB 存储 引擎 的特点:
MySQL 5.1 之后,默认的存储引擎变成了 InnoDB 存储引擎,相对于 MyISAM,InnoDB 存储引擎有较大改变,主要特点是:
1、支持事务操作,有事务 ACID 隔离特性,默认隔离级别 是 可重复读(repetable-read) 通过MVCC(并发版本控制)来实现。
能够解决 脏读 和 不可重复读 问题。
2、支持外键操作。
3、InnoDB 默认的锁粒度 行级锁,并发性能比较好,会发生死锁情况。
4、和 MyISAM 一样,InnoDB 也有 .frm文件存储表结构 定义,不同点:InnoDB 的表数据与索引数据是存储在一起的,
都位于 B+ 数的叶子节点上,而 MyISAM 的表数据和索引数据是分开的。
5、InnoDB 有安全的日志文件,这个日志文件用于恢复因数据库崩溃或其他情况导致的数据丢失问题,保证数据的一致性。
6、InnoDB 和 MyISAM 支持的索引类型相同,但具体实现因为文件结构的不同有很大差异。
7、增删改查性能方面,如果执行大量的增删改操作,推荐使用 InnoDB 存储引擎,它在删除操作时是对行删除,不会重建表。
MyISAM 存储 引擎 的特点:
MySQL5.1 版本之前,MyISAM 是 MySQL 的默认存储引擎,MyISAM 并发性比较差,使用的场景比较少,主要特点是
1、不支持事务操作,ACID 的特性也就不存在了,这一设计是为了性能和效率考虑的。
2、不支持外键操作,如果强行增加外键,MySQL 不会报错,只不过外键不起作用。
3、MyISAM 默认的锁粒度是表级锁 ,所以并发性能比较差,加锁比较快,锁冲突比较少,不太容易发生死锁的情况。
4、MyISAM 会在磁盘上存储三个文件,文件名和表名相同,扩展名分别是 .frm(存储表定义)、.MYD(MYData,存储数据)、
MYI(MyIndex,存储索引) ,这里需要特别注意的是 MyISAM 只缓存 索引文件,并不缓存数据文件。
5、MyISAM 支持的索引类型 有全局索引(Full-Text)、 B-Tree 索引、R-Tree 索引
6、
Full-Text 索引:它的出现是为了解决针对文本的模糊查询效率较低的问题。
7、B-Tree 索引:所有的索引节点都按照平衡树的数据结构来存储,所有的索引数据节点都在叶节点
8、R-Tree 索引:它的存储方式和 B-Tree 索引有一些区别,主要设计用于存储空间和多维数据的字段做索引,
目前的 MySQL 版本仅支持 geometry 类型的字段作索引,相对于 B-TREE,R-TREE 的优势在于范围查找。
9、数据库所在主机如果宕机,MyISAM 的数据文件容易损坏,而且难以恢复。
10、增删改查性能方面:SELECT 性能较高,适用于查询较多的情况