Maple's Blog.

MySQL 引擎

字数统计: 945阅读时长: 3 min
2018/08/26

ISAM

优点:

读取速度快,不占用大量内存与存储资源。

缺点:

不能够容错,不支持事务处理。

ISAM 设计为了那些读取比较频繁,但是写入比较少的操作,例如数据中心。它可以占用较少的内存和资源对数据进行读取。但是相应的缺少了一些机制,比如事务和容错性。尤其是容错性,硬盘的错误会导致整个库的数据都被丢失。

其次是加锁和并发问题,一旦涉及数据写入,整张表都会被进行加锁,这样一旦有一个数据被修改,其他数据哪怕不是同一行,修改操作都会被堵塞。

MYISAM:

优点:

  1. 是 ISAM 的扩展,提供了 ISAM 所没有的索引和字段管理。
  2. 使用一种表格锁定机制,来优化并发读写。
  3. 拥有一些有用的扩展,如修复数据的工具 MYISAMCHK。

缺点:

  1. 更新机制浪费内存空间,需要依靠 optimize table 来恢复;
  2. 不支持事务处理;

注:每个MYISAM在磁盘上存储生成三个文件,以表名命名,后缀分别为.frm,.MYD,.MYI

.frm 用来存储表的结构

.MYD 用来存储表的数据

.MYI 用来存储表的索引

MYISAM 是基于 ISAM 的扩展格式。首先是优化了字段管理的功能,并加入了索引机制。优化了表锁定,提高了并发写入的操作。但是依赖内存空间,且需要手动去恢复。同样,和 ISAM 一样也不支持事务操作。

HEAP

存在于内存的临时表格

优点:

随机分配内存,不定长度,存在内存分配和回收的问题;

缺点:

管理数据不稳定,容易丢失;

HEAP 是存储于内存中的表格,相对于 MySQL 其他引擎而言。更像是一个临时的数据保存或者缓存。关机会造成数据丢失。

InnoDB

优点:

支持事务处理和外来键,数据更新迅速;

缺点:

读取速度稍慢;

InnoDB 作为 MySQL 的特有引擎,包含其特有的几个功能。并发写入快,因为它的锁机制锁住的是行而并非是表。因此也支持事务操作。写入速度相对 ISAM 要快的多。但是读取速度相对于 ISAM 要慢。

更重要的是支持事务操作。

其他引擎

  1. **BDB: **可替代 InnoDB 的事务引擎,支持 COMMIT、ROLLBACK 和其他事务特性。
  2. Merge: 允许 MySQL DBA 或开发人员将一系列等同的 MyISAM 表以逻辑方式组合在一起,并作为单个对象引用它们。对于诸如数据仓储等 VLDB 环境十分适合。
  3. Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
  4. Federated:能够将多个分离的 MySQL 服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
  5. Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。
  6. Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)

更新表引擎

1
ALTER TABLE `table-name` ENGINE = MyISAM;

参照:

  1. mysql 引擎的优缺点
  2. 数据库引擎是什么
  3. [Mysql 数据库几种引擎的区别比较
CATALOG
  1. 1. ISAM
  2. 2. MYISAM:
  3. 3. HEAP
  4. 4. InnoDB
  5. 5. 其他引擎
  6. 6. 更新表引擎