简介

存储引擎是 MySQL 组件,用于处理不同表类型的 SQL 操作。 InnoDB是默认和最通用的存储引擎,甲骨文建议将其用于表,但特殊使用案例除外。

一、查询服务器支持的存储引擎

mysql> SHOW ENGINES\G
*************************** 1. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 2. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 3. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO

二、常用数据库引擎类型

  • InnoDB:

InnoDB是 MySQL 的事务安全(符合 ACID)存储引擎,具有提交、回滚和崩溃恢复功能来保护用户数据。 InnoDB行级锁定(不升级为更粗粒度的锁定)和 Oracle 风格的一致非锁定读取提高了多用户并发性和性能。InnoDB将用户数据存储在聚集索引中,以减少基于主键的常见查询的 I/O。为了维护数据完整性, InnoDB还支持FOREIGN KEY引用完整性约束。有关 的更多信息InnoDB,

  • MyISAM

表级锁定 限制了读/写工作负载的性能,因此它通常用于 Web 和数据仓库配置中的只读或以读取为主的工作负载。

  • Memory:

将所有数据存储在 RAM 中,以便在需要快速查找非关键数据的环境中进行快速访问。这种发动机以前称为HEAP发动机。它的用例正在减少;InnoDB其缓冲池内存区域提供了一种通用且持久的方式来将大部分或所有数据保存在内存中,并 NDBCLUSTER为庞大的分布式数据集提供快速的键值查找。

  • Archive:
    没有索引的表用于存储和检索大量很少引用的历史、归档或安全审计信息。
  • NDB (also known as NDBCLUSTER)
    这种集群数据库引擎特别适合对正常运行时间和可用性要求尽可能高的应用程序。

注:不限制您对整个服务器或模式使用相同的存储引擎。您可以为任何表指定存储引擎。

三、数据库引擎比较

特征

MyISAM

Memory

InnoDB

Archive

NDB

B-tree 索引

Yes

Yes

Yes

No

No

备份/恢复时间点

Yes

Yes

Yes

Yes

Yes

集群数据库支持

No

No

No

No

Yes

聚集索引

No

No

Yes

No

No

压缩数据

Yes

No

Yes

Yes

No

数据缓存

No

N/A

Yes

No

Yes

加密的数据

Yes

Yes

Yes

Yes

Yes

外键的支持

No

No

Yes

No

Yes

全文搜索索引

Yes

No

Yes

No

No

地理空间数据类型支持

Yes

No

Yes

Yes

Yes

地理空间索引支持

Yes

No

Yes

No

No

散列索引

No

Yes

No

No

Yes

索引缓存

Yes

N/A

Yes

No

Yes

锁的粒度

Table

Table

Row

Row

Row

MVCC

No

No

Yes

No

No

复制支持

Yes

Limited

Yes

Yes

Yes

存储限制

256TB

RAM

64TB

None

384EB

T-tree 索引

No

No

No

No

Yes

事务

No

No

Yes

No

Yes

更新数据字典的统计信息

Yes

Yes

Yes

Yes

Yes