mysql存储引擎InnoDB与MyISAM的区别
众所周知,mysql之前的存储引擎是MyISAM,在5.6版本之后默认的存储引擎是InnoDB,那么两个存储引擎有什么区别?
一.MyISAM 存储引擎
1.MyISAM存储引擎不支持事务
2.MyISAM存储引擎支持表锁设计,不支持行锁、外键
3.MyISAM存储引擎表由MYD和MYI两部分组成,其中MYD(MYData)用来存放数据文件,而MYI(MYIndex)则用来存放索引文件。另外 .frm存储表定义
4.支持3种不同存储格式 A. 静态表,固定长度表,存储速度快,占用空间多,故障易回复 B.动态表,占用空间相对小,频繁更新,产生碎片多,故障恢复难 C.压缩表,占用空间小,每个记录被单独压缩
二.InnoDB 存储引擎
1.InnoDB存储引擎支持事务
2.InnoDB存储引擎支持行锁和表锁设计,同时支持外键
3.自动增长列必须是索引,如果是组合索引,也必须是组合缩影的第一列
4.InnoDB存储引擎表单独存放到一个独立的ibd文件中
5.InnoDB通过使用多版本并发控制MVCC来获得高并发性
注: 1. MyISAM 和InnoDB 存储引擎默认BTREE索引,支持前缀索引,MyISAM 前缀长度为1000 字节,而InnoDB 前缀长度为767字节
2. InnoDB中至少有一个聚簇索引,可以有多个非聚簇索引,MyISAM中只有非聚簇索引