MySql存储引擎
导读
MySQL支持的存储引擎很多,其中包括MyISAM、InnoDB、MERGE、EXAMPLE、BDB、ARCHIVE、MEMORY、NDB Cluster等,其中InnoDB和BDB支持事务安全。同时MySql还支持一些第三方的存储引擎,例如TokuDB(高写性能高压缩存储引擎)、Infobright(列式存储引擎)。本文主要讲InnoDB和MyISAM这两个普遍使用的存储引擎之间差异,选择场景。
InnoDB存储引擎
InnoDB是MySQL最常用的数据库引擎,是MySQL AB发布binary的标准之一。InnoDB存储引擎由Innobase Oy公司所开发,在2006年五月时被甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。
一、存储结构
所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),.frm文件同样存储为表结构文件,.ibd文件存储的是数据和索引文件,InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。
InnoDB支持聚簇索引和非聚簇索引
二、存储空间消耗
InnoDB会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。
三、对事务支持情况
拥有外键和事务支持,还具有事务提交(commit)、回滚(rollback)和崩溃修复能力(crach recovery capabilities)等这些事务安全(transaction-safe ACID compliant)型表。
InnoDB中必须包含主键索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。