MySQL存储引擎对比

MySQL中常用的四种存储引擎分别是: MyISAM、InnoDB、MEMORY、ARCHIVE。MySQL 5.5版本后默认的存储引擎为InnoDB。

特性对比

MyISAMInnoDBMEMORY
是否默认5.5后默认
索引支持支持支持索引。可以创建普通索引和唯一索引,索引会存储在内存中,以提高查询性能
事务支持不支持支持不支持
支持表锁支持行锁、表锁支持表锁
主键可以没有必须有,没有指定会默认生成一个隐藏列作为主键支持
外键不支持支持不支持
AUTO_INCREMENT可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列MEMORY 引擎支持自增列。但是,由于表使用内存存储,自增值在重启或崩溃后不会保留,可能会导致在恢复时出现间隙。
全文索引支持5.7及以后版本支持不支持
并发能力较小较大MEMORY 表在并发访问方面的性能较高,因为它们存储在内存中,访问速度快。但需要注意的是,MEMORY 引擎使用的是表级锁,这可能会导致写操作的并发性能受到限制。
故障恢复能力可能需要几小时或几天来恢复支持事务处理和故障恢复,回复比较快不支持故障恢复。由于 MEMORY 表的数据存储在内存中,当 MySQL 服务停止或崩溃时,所有数据都会丢失。因此,不适合存储需要持久化的数据。

优缺点

1、InnoDB存储引擎

InnoDB是MySQL默认的事务型存储引擎,使用最广泛,基于聚簇索引建立的。InnoDB内部做了很多优化,如能够自动在内存中创建自适应hash索引,以加速读操作。

优点:支持事务和崩溃修复能力;引入了行级锁和外键约束。

缺点:占用的数据空间相对较大。

适用场景:需要事务支持,并且有较高的并发读写频率。

2、MyISAM存储引擎

数据以紧密格式存储。对于只读数据,或者表比较小、可以容忍修复操作,可以使用MyISAM引擎。MyISAM会将表存储在两个文件中,数据文件.MYD和索引文件.MYI。

优点:访问速度快。

缺点:MyISAM不支持事务和行级锁,不支持崩溃后的安全恢复,也不支持外键。

适用场景:对事务完整性没有要求;表的数据都会只读的。

3、MEMORY存储引擎

MEMORY引擎将数据全部放在内存中,访问速度较快,但是一旦系统崩溃,数据都会丢失。

默认使用哈希索引,将键的哈希值和指向数据行的指针保存在哈希索引中。

优点:访问速度较快。

缺点:

  1. 哈希索引数据不是按照索引值顺序存储,无法用于排序。
  2. 不支持部分索引匹配查找,因为哈希索引是使用索引列的全部内容来计算哈希值的。
  3. 只支持等值比较,不支持范围查询。
  4. 当出现哈希冲突时,存储引擎需要遍历链表中所有的行指针,逐行进行比较,直到找到符合条件的行。

4、ARCHIVE存储引擎

ARCHIVE存储引擎非常适合存储大量独立的、作为历史记录的数据。ARCHIVE提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值