1、innoDB的优点
支持事务
InnoDB支持ACID(原子性、一致性、隔离性、持久性)事务,当一个事务被提交时,要么完全执行,要么完全回滚,这种机制保证了数据的一致性,并且可以大大降低数据丢失或者损坏的风险
行级锁
只有正在被修改的行会被锁定,而其他的行或者表可以继续被访问,行锁机制可以减少锁竞争的概率,从而提高MySQL的性能和相应速度,不过修改语句必须要有索引
并发控制
InnoDB实现多版本并发控制,也就是MVCC,最大的特点是读不加锁,读写不冲突,可以实现高并发的读写操作
高性能
InnoDB支持缓冲池,用户发起一个查询请求时,MySQL会首先检查缓冲池中,是否已经存在该查询的结果,如果该结果在缓冲池中,就直接返回结果,而不需要到磁盘中去查找数据,如果查询结果不在缓冲池中,则需要执行查询语句,并将结果存入到缓冲池中,下次查询就可以直接查询缓冲池了,当缓冲池已满,并且需要存储新的数据时,系统会使用最少使用的数据进行淘汰,缓冲池的大小可以通过修改MySQL的配置文件中的参数进行调整,参数是innodb_buffer_pool_size,这个参数也可以动态调整
show global variables like "innodb_buffer_pool_size";
一般把这个值设置为机器内存的60%-80%
支持热备份
可以使用一些逻辑备份比如mysqldump,mydumper进行在线备份,不会锁表,或者使用物理备份XtraBackup都是可以在线备份,不会锁表,但是备份会消耗磁盘IO和内存,通常建议是在从库进行备份
2、InnoDB的适用场景
高可靠性应用程序:支持事务可以保证数据的一致性和完整性
对并发要求高的场景:支持行级锁,并且支持MVCC,加上有缓冲池的特性,可以很好的支持高并发的场景
数据一致性要求高的场景:因为支持事务,并且有双写的机制,所以innoDB的数据一致性是很高的