MYSQL数据库之常见的数据引擎

前言

InnoDB和MyISAM是在日常开发中较为常见的引擎类型,下面我们对这两种常见的引擎做一些比对,了解InnoDB和MyISAM两者之间区别。

InnoDB和MyISAM对比

InnoDB MyISAM
事务和外键 支持事务和外键,具有安全性和完整性,适合大量insert或update操作 不支持事务和外键,它具有高速存储和索引,适合大量的select查询操作
锁机制 支持行级锁,锁定指定记录。基于索引来加锁实现 支持表级锁,锁定整张表
索引结构 使用聚集索引,索引和记录一起存储,即缓存索引,也缓存记录 非聚集索引,索引和记录分开
并发处理能力 读写阻塞可以与隔离级别有关,采用多个版本并发控制(MVCC)来支持高并发 使用表锁,会导致写操作并发率低,读之间不会阻塞,读写阻塞
存储文件 对应两个文件,一个.frm表结构文件;一个.ibd数据文件。innodb表最大支持64TB 对应三个文件,一个.frm表结构文件,一个MYD表数据文件,一个.MYI索引文件。从MySQL5.0版本起默认限制是256TB
InnoDB文件结构图
InnoDB文件结构图

InnoDB和MyISAM各自适用场景

  • InnoDB

    • 需要事务支持(具备较好的事务特性)
    • 行级锁定对高并发有着很好的适应能力
    • 数据更新较为频繁的场景
    • 数据一致性要求较高
    • 硬件设备内存较大,可以更好利用InnoDB的缓存能力来提高内存利用率,减少磁盘I/O
  • MyISAM

    • 不需要事务支持(它本身就不具备事务特性)
    • 并发相对较低(锁定机制问题)
    • 数据修改相对较少,主要以读为主
    • 数据一致性要求不高(不具备事务特性,某些高并发场景下存在数据不一致)

总结:在大多数场景下,都采用InnoDB引擎,MySQL5.5版本开始默认使用InnoDB作为默认引擎。如需在特殊场景下,可以在建表时就指定引擎为MyISAM。

扩展知识:各种存储引擎特性对比

Mysql存储引擎特性
Mysql存储引擎特性
posted @ 2021-05-29 17:41  GZ-Kevin哥  阅读(166)  评论(0编辑  收藏  举报