常用存储引擎的对比

MySQL 支持的存储引擎

存储引擎支持的功能主要有数据存储、并发、事务、索引、完整性约束等

# 查看MySQL支持的引擎
show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

MySQL 引擎对比

InnoDB

作为 MySQL 5.1 之后的默认的存储引擎,InnoDB 提供了事务、回滚、崩溃修复能力、多版本并发控制的事务安全、间隙锁(防止幻读)、支持辅助索引、集簇索引、自适应 hash 索引、支持热备、行级锁,InnoDB 是 MySQL 上唯一一个提供了外键约束的引擎,如果使用到外键、需要并发程度较高,数据一致性要求较高,那么通常选择 InnoDB 引擎。

MyISAM

MyISAM支持全文索引、压缩存储、空间索引、表级锁、延迟更新索引键,但是MyISAM不支持事务、行级锁和外键约束的功能,MyISAM存储引擎插入数据很快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM存储引擎能够实现高效率的处理。如果应用的完整性、并发性要求比较低、可以选择MyISAM存储引擎。

MEMORY

这种类型的数据表只存在于内存中。它使用散列存储、所以数据的存取速度非常快。因为是存在于内存中,数据安全性很低,如果内存出现异常就会影响到数据的完整性,如果重启或关机,表中的数据就会丢失,所以这种类型常用于临时表中。

MERGE

MERGE 是 MyISAM 类型的一种变种,合并表是将几个相同的MyISAM表合并为一个虚表,常应用于日志和数据仓库。

ARCHIVE

ARCHIVE 即为归档,这种类型只支持 SELECT 和 INSERT 语句,但是它拥有很好的压缩机制,通常用于做仓库使用,ARCHIVE 存储引擎适用于存储日志信息或其他按时间序列实现的数据采集类的应用场景中。

BLACKHOLE

BLACKHOLE 没有存储机制,任何数据都会被丢弃,但是会记录二进制日志,一般在 MySQL 复制中经常用到。

CSV

是将数据文件保存为CSV格式的文件的,可以方便的导入到其他数据库中去,由此需要在数据库建自由共享数据时才建议使用。

FEDERATED

可以实现跨服务器整理表,简单说就是它可以访问远程服务器上数据的存储引擎,所以说它不在本地创建数据只会自动的建立一个连接到其他服务器上。

PERFORMANCE_SCHEMA

主要用于收集数据库服务器性能参数。Performance_Schema 提供了进程等待的详细信息,包括锁、互斥变量、文件信息,保存历史的事件汇总信息,为提供 MySQL 服务器性能做出详细的判断,对于新增和删除监控事件点都非常容易,并可以随意改变 MySQL 服务器的监控周期,通过以上得到的信息,DBA能够较明细的了解性能可能的瓶颈。