Mariadb (MySQL) 存储引擎的对比

Mariadb (MySQL) 存储引擎的对比

MyISAM:

  • 不支持事务处理
  • 表级锁定,可能导致写操作阻塞读操作
  • 支持全文索引
  • 快速的计数操作(SELECT COUNT(*))
  • 数据和索引分开存储,索引文件压缩,可提高查询性能
  • 更适合读密集型应用

InnoDB:

  • 支持事务处理和 ACID 兼容
  • 行级锁定,减少读写冲突,适合并发写操作
  • 支持外键约束
  • 不支持全文索引(在 MySQL 5.6 之前)
  • 通过主键快速访问数据,更适合写密集型应用
  • 数据和索引紧密绑定,表通常比 MyISAM 大

InnoDB 更适合高事务性或并发写入。MyISAM 更适合单纯查询操作。

对比表格

特点 MyISAM InnoDB
存储结构 分成三个文件:.frm(表定义)、.MYD(数据)、.MYI(索引) 表空间数据文件和日志文件
事务支持 不支持 支持
外键支持 不支持 支持
默认存储引擎 MySQL 5.1 之前 MySQL 5.1 之后
全文索引 支持 不支持
表行数计算 简单读取保存好的行数 需要扫描整个表来计算行数
自增长字段 可以与其他字段一起建立联合索引 必须单独建立索引
删除表记录效率 重建表 逐行删除
表锁 行锁,但可能锁全表
适用场景 查询为主的应用 频繁修改和安全性较高的应用
并发性 较小 较大
性能 查询快,插入更新慢 插入更新快,查询相对慢
其他特点 索引压缩、全表锁、支持全文搜索 数据和索引分离、表空间组织