数据库存储引擎对比


存储引擎是什么?

存储引擎是数据库的核心

百度百科
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 !
评论
  目录