外观
MySQL 主要的存储引擎是什么
常见的 MySQL
存储引擎及其特点如下:
InnoDB
- 支持事务:遵循
ACID
原则,确保数据库操作的原子性、一致性、隔离性和持久性,即使系统故障,事务也能保持完整性和可靠性。 - 行级锁定:与表级锁定相比,能更精确地控制数据访问,减少并发访问时的锁争用,提高数据库的并发性能。
- 多版本并发控制(
MVCC
):实现非锁定读取,允许读取操作在不影响写入操作的情况下进行,提高并发读取性能。 - 外键约束:支持外键约束,有助于维护数据库中表与表之间数据的关系完整性。
- 默认引擎:从MySQL 5.5开始,InnoDB成为默认存储引擎。
MyISAM
- 非事务支持:不支持事务,不遵循
ACID
原则,但处理非事务性查询时表现出色,读操作更快。 - 表级锁定:使用表级锁定机制,一个事务修改数据表时,其他事务无法访问该表,可能导致锁争用。
- 全文索引:支持全文索引,能加快基于文本内容的查询速度,适合文本搜索的应用场景。
- 数据与索引分离:数据文件和索引文件分开存储,在只读取索引信息时可减少数据文件的
I/O
操作。
Memory
- 内存存储:将所有数据和索引存储在服务器内存中,读写操作非常快,常用于创建临时表或缓存表。
- 表大小限制:由于数据存储在内存中,对表的大小有限制,默认不能超过服务器的内存限制。
- 数据安全性:服务器重启后,数据会丢失,不适合存储需要持久化的数据。
- 索引支持:支持多种类型的索引,包括哈希索引和
B
树索引,哈希索引等值查询快,但不支持范围查询。