编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

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 测试数据跟硬件和测试条件不同而有很大差异。

未经允许不得转载: 技术文章 » 数据库 » mysql引擎innodb和myisam区别