数据库存储引擎对比


存储引擎是什么?

存储引擎是数据库的核心

百度百科
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

存储引擎有哪些

使用 SHOW ENGINES; 查看

存储引擎一览

存储引擎 MyISAM InnoDB BDB Memory Archive NDB
存储限制 无 64TB 无 有 无 有
事务 支持 支持
锁级别 表锁 行锁 page 表 行 行
MVCC(并发控制) 支持 支持 支持
全文索引 支持
集群索引 支持
数据缓存和索引缓存 支持 支持 支持
数据压缩 支持 支持
批量插入速度 高 低 高 高 很高 高
集群数据库支持 支持
外键支持 支持
适用场景 不需要事务的操作;插入、更新少,读取频繁;频繁的统计计算。 需要事务的操作;更新数据需要使用行级锁;大数据量读写;大型互联网应用。 类似 InnoDB 数据量不大,需要被频繁的访问,而且数据丢失不会对业务产生比较严重的影响。 存储引擎基本上用于数据归档,作为日志表 集群
特点 可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性 数据存储在内存中,重启或崩溃,数据消失,使用哈希索引 只支持Insert和Select操作,支持索引,非常适合存储归档数据, 目标:高速插入和压缩功能 集群存储引擎,数据全部放在内存中,高可用、高性能的集群系统

适用场景

注:新 MySQL 的存储引擎默认是 InnoDB

以下内容来自 bilibili 视频笔记

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

InnoDB 存储引擎

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

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

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

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

MyISAM存储引擎

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

优点:访问速度快。

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

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

MEMORY 存储引擎

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

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

优点:访问速度较快。

缺点:

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

ARCHIVE 存储引擎

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

参考

存储引擎对比

MySQL - 常见的三种存储引擎


文章作者: Mou shuai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mou shuai !
赏
评论
  目录