mysql中MyISAM引擎和InnoDB引擎差别

来源:互联网 发布:软件著作权 处理时间 编辑:程序博客网 时间:2024/05/22 03:34
基本差别
MyISAM类型不支持事务处理等高级功能,而InnoDB支持。
MyISAM类型不支持等级锁,而InnoDB支持。
MyISAM类型不支持外键,而InnoDB支持。
MyISAM类型的表强调的是性能,其执行速度比InnoDB更快。
细节差别
1、innoDB不支持FULLTEXT类型的索引
2、innoDB中不保存表的具体行数,执行select count(*) from table时,innoDB需要扫描整表,而MyISAM只需要读出保存的行数。如果添加where条件语句,两种是一样的。
3、对于AUTO_INCREAMENT类型的字段,InnoDB中必须包含只有该字段的索引,而MyISAM表中,可以和其他字段建立联合索引。
4、执行delete from table时,innoDB不会重新建立表,而是一行一行的删除。
5、LOAD DATA FROM MASTER是在建立主从服务器以后,在从服务器上发起的命令,目的是将主服务器中的数据复制到从服务器,只对MyISAM有效。
InnoDB的的二级索引的叶子节点存放的是KEY字段加主键值。因此,通过二级索引查询首先查询到的是主键值,然后InnoDB再根据查到的主键值通过主键索引找到对应的数据块。
而MyISAM的二级索引叶子节点存放的还是列值和行号的组合,叶子结点保存的是数据的物理地址。所以可以看MyISAM的主键索引和二级索引没有区别,主键索引仅仅只是一个唯一、非空的索引,
且MyISAM引擎中可以不设主键。
读写分离时,主用innoDB,从用MyISAM。