存储引擎是什么?mysql
MySQL中的数据用各类不一样的技术存储在文件中,这些技术中的每一种技术都使用不一样的存储机制、索引技巧、锁定水平而且最终提供普遍的不一样的功能和能力。经过选择不一样的技术,额可以得到额外的速度或功能,改善应用功能。sql
1.InnoDB数据库
InnoDB是一个健壮的事务性存储引擎,有行级锁定和外键约束,适用于如下场合:缓存
另外,从MySQL5.7开始InnoDB就成为默认的存储引擎。服务器
2.MyISAM并发
MyISAM表是独立于操做系统的,这说明能够轻松的将其从Windows服务器移植到Linux服务器。每当简历一个MyISAM引擎的表时,就会建立三个文件,文件名是表名,三个文件以下:性能
MyISAM引擎不支持事务操做(固然,能够在service层根据本身的业务需求进行相应的控制),MyISQM存储引擎适合在如下状况使用:操作系统
3.MRG_MyISAM日志
MRG_MyISAM存储引擎是一组MyISAM表的组合,也就是说它将MyISAM引擎的多个表聚合起来,可是它内部没有数据,真正的数据依然在MyISAM引擎的表中。blog
例如:同一种类的数据根据时间分为多张表存储,这时查询就会比较麻烦,MRG_MyISAM引擎能够直接将多个表聚合成一个表统一查询。
4.MEMORY
Memory存储引擎的出发点是速度。为了获得最快的响应时间,采用的存储介质是系统内存。虽然在内存中存储表数据回提供很高的性能,但当mysqld守护进程崩溃时,全部的Memory数据都会丢失。另外,它要求存储在数据表中的数据使用的是长度不变的格式,这意味着不能使用blob和text这样的长度可变的数据类型,varchar是一种长度可变的类型,但由于它在MySQL内部看成长度固定不变的char类型,因此可使用。
使用Mymory存储引擎的场景:
5.CSV
csv存储引擎是csv格式文件存储数据。
由于csv文件能够被Office等软件直接编辑,可能会出现不规则的状况,若出现csv文件中内容损坏的状况,可使用check table或repair table名零零检查和修复。
6.ARCHIVE
archive是归档的意思,仅仅支持插入和查询两种操做,在MySQL5.5之后支持索引功能,有很好的压缩机制,在记录请求时进行实时压缩,因此常常被看成仓库来使用。适合存储大量的独立的做为历史纪录的数据,拥有很高的插入速度可是对查询的支持比较差。
7.BLACKHOLE
黑洞存储引擎,全部插入的数据不会保存,boackhole引擎表永远保持为空。服务器会记录下Blackhole表的日志,因此能够用于复制数据到备份数据库。
8.PERFORMANCE_SCHEMA
主要用于收集数据库服务器的性能参数。MySQL用户不能建立存储引擎为PERFORMANCE_SCHEMA的表。
他提供了如下的功能:
9.其余
固然还有其它一些存储引擎,如FEDERATED、OQGraph、SphinxSE、TokuDB、Cassandra、CONNECT、SQUENCE等。
不一样的存储引擎有各自的特色,根据实际状况选择合适的存储引擎,其对好比下图所示:
查看支持的存储引擎:
show engines;
show engines\G;
查看mysql存储引擎系统变量:
修改数据库引擎:
方式一:
修改配置文件my.ini,在[mysqld]后面添加default-storage-engine=InnoDB,重启服务,将数据库默认引擎修改成InnoDB。
方式二:
在建表是指定存储引擎:
指定test表的存储引擎为MyISAM。
方式三:
建表后更改:
更改该表的存储引擎为InnoDB。
查看表使用的存储引擎:
该如何选择合适的存储引擎呢?提供如下几个选择的标准,实际状况灵活选择: