MyISAM 存储引擎 - MyISAM、MEMORY、BLACKHOLE 和 ARCHIVE

MyISAM 是 MySQL 服务器版本 5.5.5 之前的默认 MySQL 存储引擎。
当前默认是 InnoDB 存储引擎。
mysql 数据库包含 MyISAM 格式的表。

每个 MyISAM 表由三个文件表示:

  • Formatfile :存储表结构的定义(mytable.frm)
  • 数据文件:存储表行的内容(mytable.MYD)
  • 索引文件:存储表 (mytable.MYI) 上的任何索引

MyISAM 存储引擎将磁盘上的每个表存储在三个文件(.frm、.MYD 和 .MYI)中,并具有以下特点:

  • 支持全文搜索和空间数据类型
  • 灵活的 AUTO_INCREMENT
  • 压缩的只读表,节省空间
  • 表级锁定以管理查询之间的争用
  • 便携式存储格式
  • 能够指定表的行数
  • 能够控制将数据加载到空表的非唯一索引的更新

添加的功能:

  • MyISAM 表占用的空间很小。
  • 表存储格式是可移植的,因此表文件可以直接复制到另一台主机并由该主机上的服务器使用。
  • 将数据加载到空表时,可以禁用非唯一索引的更新,然后在加载数据后重新启用。
  • MyISAM 支持几何空间扩展
  • MyISAM 可以通过将表大小限制为一定数量的行来提高性能。
MySQL 存储引擎

内存存储引擎

MEMORY 存储引擎使用存储在内存中的内容创建表,在磁盘上由 .frm 文件表示。
内容不会在服务器重新启动后继续存在(结构仍然存在,但表包含零行)。
MySQL 通过使用表级锁定来管理查询争用。
不会发生死锁。

它具有以下特点:

  • 存储在内存中的表数据和索引
  • 由于内存存储,性能非常快
  • 定长行存储格式
  • 重新启动后不存在的表内容
  • 最大大小选项 -max-heap-table-size
  • 表级锁定

内存表:

  • 不能包含 TEXT 或者 BLOB 列
  • 可以对不同的列使用不同的字符集

在较旧的 SQL 代码中可能仍会看到 HEAP,并且 MySQL 服务器仍会识别 HEAP 以实现向后兼容性。
MEMORY 性能受到处理更新时单线程执行和表锁开销导致的争用的限制。
当负载增加时,这会限制可伸缩性,特别是对于包含写入的语句混合。
此外,MEMORY 不会在服务器重新启动时保留表内容。
MEMORY 是一种有效且有用的存储引擎,几乎所有应用程序设计都应考虑使用它,以提高性能并满足特定业务规则的需求。

BLACKHOLE 存储引擎

BLACKHOLE 存储引擎充当“黑洞”,接受数据但将其丢弃而不存储。
该存储引擎具有以下主要特征:

  • 由 .frm 文件表示
  • 用于复制
  • 支持各种索引
  • 检索总是返回空结果。
  • 验证转储文件语法
  • 测量二进制日志的开销
  • “无操作”存储引擎,可用于查找与存储引擎无关的性能瓶颈
  • 事务感知

提交的事务会写入二进制日志,回滚的事务不会。

更多: zhilu jiaocheng

归档存储引擎

ARCHIVE 存储引擎用于以压缩格式存储大量数据,从而实现非常小的占用空间。
它具有以下主要特征:

  • 由 .frm 文件表示
  • 数据文件:.ARZ
  • 不支持索引
  • 支持 INSERT 和 SELECT,但不支持 DELETE、REPLACE 或者 UPDATE
  • 支持 ORDER BY 操作和 BLOB 列
  • 接受除空间数据类型之外的所有数据类型
  • 使用行级锁定
  • 支持 AUTO_INCREMENT 列
日期:2020-09-17 00:11:14 来源:oir作者:oir