编程那点事 编程那点事编程那点事

mysql引擎innodb和myisam区别

mysql引擎innodb和myisam区别

我们重点从在功能和性能上对比 InnoDB 和 MyISAM的区别。

myisam和innodb功能对比

InnoDB 和 MyISAM 的功能对比下表所示。

功能 InnoDB MyISAM
ACID事务 是 否
配置ACID属性 是 否
崩溃恢复 是 否
外键支持 是 否
行级锁粒度 是 否
MVCC 是 否
  • InnoDB 支持 ACID 的事务 4 个特性,而 MyISAM 不支持;
  • InnoDB 支持 4 种事务隔离级别,默认是可重复读 Repeatable Read 的,MyISAM 不支持;
  • InnoDB 支持 crash 安全恢复,MyISAM 不支持;
  • InnoDB 支持外键,MyISAM 不支持;
  • InnoDB 支持行级别的锁粒度,MyISAM 不支持,只支持表级别的锁粒度;
  • InnoDB 支持 MVCC,MyISAM 不支持;

InnoDB 表最大还可以支持 64TB,支持聚簇索引、支持压缩数据存储,支持数据加密,支持查询/索引/数据高速缓存,支持自适应hash索引、空间索引,支持热备份和恢复等,如下表所示。

功能 支持 功能 支持
存储限制 64 TB 索引高速缓存 是
MVCC 是 数据高速缓存 是
B 树索引 是 自适应散列索引 是
群集索引 是 复制 是
压缩数据 是 更改数据字典 是
加密数据 是 地理空间数据类型 是
查询高速缓存 是 地理空间索引 否
事务 是 全文搜索索引 是
锁定粒度 行 群集数据库 否
外键 是 备份和恢复 是
文件格式管理 是 快速索引创建 是
多个缓冲区池 是 PERFORMANCE SCHEMA 是
更改换冲 是 自动故障恢复 是

innodb和myisam性能对比

在性能对比上,InnoDB 也完胜 MyISAM,如下图所示。

innodb和myisam性能对比图

  • 读写混合模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长。
  • 在测试用例里,最高可达近 9000 的 TPS,但 MyISAM 因为读写不能并发,它的处理能力跟核数没关系,呈一条水平线,TPS 低于 500。
  • 只读模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长,最高可达近 14000 的 TPS,但 MyISAM 的处理能力不到 3000 TPS。

以上测试仅为说明 InnoDB 比 MyISAM 的处理能力强大,具体 TPS 测试数据跟硬件和测试条件不同而有很大差异。

编程那点事 更专业 更方便

登录

找回密码

注册