MySql可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎。而每一种存储引擎也使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。常见的存储引擎有MyISAM,InnoDB,Memory,Archive等。
本文主要介绍的是:MyISAM与InnoDB。在5.5版本之前,MyISAM是MySQL的默认数据库引擎。虽然性能极佳,但却有一个缺点:不支持事务处理。在之后,MySql的默认数据库引擎就是InnoDB了。与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,以及外部键等高级数据库功能。下面就主要聊聊这两者的具体区别。
MyISAM与InnoDB的区别
存储结构
MyISAM:每个MyISAM在磁盘上存储成三个文件。
table_name.frm 存储表结构(定义)。
table_name.MYD 存储数据
table_name.MYI 存储索引文件
InnoDB:把数据存储在表空间中,分为两种方式:
1)、所有InonoDB表的数据和索引放置于同一个表空间中;
2)、每个表单独使用一个表空间存储表的数据和索引。
当所有表位于同一表空间中,其数据文件存于数据目录下以ibddata[#]来命名。这种方式不利于管理和备份恢复。所以一般使用第二种方式,每张表创建单独的表空间,用来实现InnoDB所支持的高级特性,比如单表导入导出,单标备份等功能。数据文件为:
table_name.ibd 存储数据和索引
table_name.frm 存储表结构(定义)
事务支持
MyISAM:强调性能,其执行速度比InnoDB类型更快但不提供事务的支持,也不支持外键,适用于大量select操作的应用场景。
InnoDB:支持事务,并把事务分为四个隔离级别,
RE

本文详细对比了MySql的MyISAM与InnoDB存储引擎,包括存储结构、事务支持、锁粒度、索引类型、 AUTO_INCREMENT、存储空间、备份恢复策略等方面。MyISAM强调性能,不支持事务,适合大量SELECT操作;InnoDB支持事务,行级锁,适合事务要求高的场景。在选择时,根据实际需求如事务处理、并发量、数据恢复等来决定使用哪种引擎。
最低0.47元/天 解锁文章
1596

被折叠的 条评论
为什么被折叠?



