一、常见存储引擎
我们可以知道表的类型是由存储引擎决定的,如图所示,我们可以看到MySQL中支持八种储存引擎,那么我们这里就介绍常用的三种存储引擎,分别是Innodb、MyISAM、Memory。
二、Innodb、MyISAM、Memory的特点
1、Innodb
Innodb存储引擎提供了具有提交 、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,Innodb写的处理效率差并且会占用更多的磁盘空间保留数据和索引。
2、MyISAM
MyISAM存储引擎不支持事务、也不支持外键,但访问速度很快,对事务的完整性没有要求。
3、Memory
Memory储存引擎使用内存中的内容来创建表。每个Memory表只实际对应一个磁盘文件。Memory类型的表访问非常得快,因为它得数据是放在内存中得,并且默认使用Hash索引。但是服务器一旦关闭,表中数据会丢失,但表的结构还在。(常用:用户的在线情况)
三、Innodb与MyISAM的区别
1. InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提 交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务。
2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败。
3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。 但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该 过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的, 索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
4. InnoDB支持行锁,MyISAM支持表锁。InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用 一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快。
5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高。