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所支持的高级特性,比如单表导入导出,单标备份等功能。数据文件为: