乐趣区

关于mysql:MySQL支持的各类存储引擎比较说明

  • 存储引擎是解决不同表类型的 SQL 操作的 MySQL 组件。InnoDB 是默认且最通用的存储引擎。(MySQL 8.0 中的 CREATE TABLE 语句默认创立 InnoDB 表。)
  • 确定您的服务器反对哪些存储引擎,应用 SHOW ENGINES 语句。Support 列中的值示意是否能够应用引擎。
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
...
  • MySQL 8.0 反对的存储引擎列表如下

    • InnoDB:MySQL 8.0 中的默认存储引擎。InnoDB 是用于 MySQL 的事务平安(合乎 ACID)存储引擎,具备提交、回滚和解体复原性能来爱护用户数据。InnoDB 行级锁定(不降级到更粗粒度的锁定)和 Oracle 格调的统一非锁定读取进步了多用户并发性和性能。InnoDB 将用户数据存储在汇集索引中,以缩小基于主键的常见查问的 I /O。为了保护数据完整性,InnoDB 还反对 FOREIGN KEY(外键)援用完整性束缚。
    • MyISAM:表占用空间很小。表级锁定限度了 read/write 工作负载的性能,因而它通常用于 Web 和数据仓库配置中的只读或以读取为主的工作负载。
    • Example:将所有数据存储在 RAM 中,以便在须要疾速查找非关键数据的环境中快速访问。该引擎以前称为 HEAP 引擎。它的应用场景正在缩小;InnoDB 及其缓冲池内存区域提供了一种通用且长久的形式来将大部分或所有数据保留在内存中,而 NDBCLUSTER(NDB)为宏大的分布式数据集提供了疾速的键值查找。
    • CSV:实际上是具备逗号分隔值的文本文件。CSV 表容许您以 CSV 格局导入或转储数据,以便与读取和写入雷同格局的脚本和应用程序替换数据。因为 CSV 表没有索引,因而通常在失常操作期间将数据保留在 InnoDB 表中,并且仅在导入或导出阶段应用 CSV 表。
    • Archive:紧凑的未索引的表旨在存储和检索大量很少援用的历史、存档或平安审计信息。
    • Blackhole:承受但不存储数据,相似于 Unix 的 /dev/null 设施。查问总是返回一个空集。这些表可用于复制配置,其中 DML 语句被发送到正本服务器,但源服务器不保留本人的数据正本。
    • NDB(也称为 NDBCLUSTER):此集群数据库引擎特地实用于须要尽可能高的失常运行工夫和可用性的应用程序。
    • Merge:不便 MySQL DBA 或开发人员可能对一系列雷同的 MyISAM 表进行逻辑分组,并将它们作为一个对象援用。实用于 VLDB 环境,例如数据仓库。
    • Federated:提供链接独自的 MySQL 服务器,从许多物理服务器创立一个逻辑数据库的能力。非常适合分布式或数据集市的环境。
    • Example:为 MySQL 源代码中的示例,阐明了如何开始编写新的存储引擎。它次要是开发人员感兴趣的。存储引擎是一个什么都不做的“存根”。您能够应用此引擎创立表,但无奈在其中存储或检索任何数据。

退出移动版