1、什么是存储引擎?
关系数据库是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时却很差。而我们在实际开发过程中,就可能需要各种的表,不同的表,就意味着存储不同类型的数据,数据处理上也会存在着差异。对于mysql来说,它提供了很多类型的存储引擎,我们可以根据数据处理的需求,选择不同的存储引擎,从而最大限度的利用Mysql强大的功能。
在mysql客户端中,使用以下命令可以查看Mysql支持的引擎。
SHOW ENGINES ;
2、mysql存储引擎的总结
MyISAM:当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名。例如,我建立一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件:
1、tb_Demo.frm,存储表定义
2、tb_Demo.MYD,存储数据
3、Tb_Demo.MYI,存储索引
MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。
MyISAM存储引擎特别适合在以下几种情况下使用:
1、选择密集型的表:MyIASM存储引擎在筛选大量数据时非常迅速,这是它最突出的有点。
2、插入密集型的表:MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理右键或web服务器日志数据。
InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据提供了一个强大的解决方案。我的电脑上安装的MySQL5.6.17版,InnoDB就是作为默认的存储引擎。InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择:
1、更新密集型的表:InnoDB存储引擎特别适合处理多重并发的更新请求
2、事务:InnoDB存储引擎是支持事务的标准MySQL存储引擎
3、自动灾难恢复:与其他存储引擎不同,InnoDB表能够自动从灾难中恢复
4、外键约束:MySQL支持外键的存储引擎只有InnoDB
5、支持自动更加列AUTO_INCREMENT属性
一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。