存储引擎就是指表的类型以及表在计算机上的存储方式。
MySQL数据库及其分支版本主要的存储引擎有InnoDB、MyISA、Memory等。
InnoDB存储引擎
- InnoDB是事务型数据库的首选引擎,支持事务ACID。
- InnoDB支持行级锁,行级锁可以在最大程度上支持并发。
- InnoDB是为处理巨大数据量的最大性能设计,InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。
- InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按照主键顺序存放,如果没有显式在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键。
- InnoDB支持崩溃数据自修复。当数据库异常崩溃后,数据库重新启动时会根据redo log进行数据恢复,保证数据库恢复到崩溃前的状态。
MyISAM存储引擎
- MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用。
- 其锁定机制是表级索引,虽然可以让锁定的实现成本很小,但是也同时大大降低了其并发性能。
- 不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。
- 只会缓存索引:MyISAM