专业编程基础技术教程

网站首页 > 基础教程 正文

MySQL中MyISAM和InnoDB的区别是什么?

ccvgpt 2024-10-12 14:01:27 基础教程 10 ℃

MyISAM和InnoDB是MySQL的两种存储引擎。

为了便于说明,我们先来看一张MySQL的架构图,MyISAM和InnoDB是MySQL支持的存储引擎中的两种。

MySQL中MyISAM和InnoDB的区别是什么?

MySQL的设计使得存储引擎可以任意切换,这是一种很好的软件设计理念。

从发展时间线来看,Mysql-5.1版本之前默认引擎是MyISAM,之后是innoDB。

MyISAM和InnoDB最明显的区别就是Innodb支持事务,而MyISAM不支持事务。

两者的差异如下表:


MyISAM

InnoDB

事务支持

不支持

支持

锁定粒度

表级锁

行级锁

数据一致性

不提供

提供

并发性能

读操作并发性能好,写操作串行执行

读写操作都有较好的并发性能

关联性能

对简单查询效率高

对复杂关联查询效率高

外键支持

不支持

支持

全文索引

支持

不支持

崩溃恢复

不支持

支持

索引类型

B+树索引

聚簇索引(主键索引)和辅助索引(二级索引)

存储空间

占用较小

占用较大

缓存机制

只缓存索引

缓存数据和索引

适用场景 MyISAM适合没有事务要求、读多写少的场景,InnoDB对读写都具备良好的并发性能。

虽然Mysql-5.1之后,默认存储引擎为InnoDB了,很多人几乎没用到过MyISAM。但是了解MyISAM的特性和原理也是非常有必要的。

最近发表
标签列表