MySQL支持InnoDB、MyISAM、MEMORY、CSV等多个存储引擎,那为什么选InnoDB作为默认引擎呢?
主要原因有几点:
-
事务
事务主要用于保持数据一致性,是一组操作的集合,要么全部成功,要么全部失败。InnoDB引擎提供了对事务的支持,可以进行ACID(原子性、一致性、隔离性、持久性)属性的操作。
-
外键
InnoDB支持外键约束,能够保证数据的一致性和完整性。外键是表与表之间的关联,可以确保引用表中的数据在主表中存在,避免了数据的异常和错误。
-
高并发
InnoDB引擎采用了行级锁定的机制,可以提供更好的并发性能,可以同时进行多个操作,而不会因为锁定整个表而导致其他操作被阻塞。MyISAM存储引擎只支持表锁,锁的粒度比较大。
-
故障恢复
InnoDB引擎使用了redo日志和undo日志来记录数据的修改操作,确保数据的持久性。可以在数据库发生异常情况(如断电)时,通过日志文件进行恢复,保证数据的持久性和一致性。Myisam是不支持崩溃恢复的。