1.InnoDB和MyISAM的区别
(1)InnoDB支持事务,而MyISAM不支持事务。InnoDB会将每一条SQL语句都默认封装成一个事务,自动提交,这样会影响速度,因此建议将多条SQL语句放在begin和commit之间组成一个事务。
(2)InnoDB支持外键,而MyISAM不支持外键。将一个包含外键的InnoDB表转换成MyISAM会失败。
(3)InnoDB是聚簇索引,使用B+树作为索引结构,数据文件和索引是放在一块的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,第一次先查询到主键,然后再通过主键查询到数据。因此,主键不应该太大,因为如果主键太大那么其他索引也会很大。在InnoDB的B+树中,主键索引的叶子节点存储的是数据文件,辅助索引的叶子节点存储的是主键值。
MyISAM是非聚簇索引,也是使用B+树作为索引结构,但是数据文件和索引是分开存储的。在MyISAM的B+树中,主键索引和辅助索引的叶子节点存储的都是数据文件的地址指针。
(4)InnoDB不支持全文索引(在5.7之后InnoDB也支持全文索引了)&