MySQL提供了多种存储引擎,可以根据不同的需求选择,用户也可以去编写自己的核心引擎。MySQL的核心部分就是编写引擎。
数据库的存储引擎决定了表计算机在表 中的存储方式,涉及如何存储、如何建立索引、如何更新。用为数据库中数据仪表的形式进行存储,所以引擎简而言之就是表的类型。
MySQL5.7 支持 的存储引擎有: InnoDB、MRG_MyISAM,Memory、BLACKHOLE、MyISAM、CSV、Archive、Federated和PERFORMANCE schema等9种。
常用的有三种:
常用三种存储引擎
MySQL的默认存储引擎是InnoDB,如果想设置其他存储引擎,可以使用如下MySQL命令:
set default_storage_engine=MyISAM;
所有引擎
InnoDB的特点:(主)
(1)是MySQL上第一个提供外键约束的表引擎,处理能力强,但是插入数据的速度较低。
(2)InnoDB是事务型数据库的首选引擎,是具有提交、回滚和崩溃恢复能力的事务安全存储引擎,支持行锁定和外键约束。
(3)InnoDB存储引擎中支持自动增长列auto_increment。自动增长列的值不能为空,且值必须惟一。MySQL中规定自增列必须为主键。在插入值时,如果自动增长列不输入值,则插入的值为自动增长后的值。如果输入的值为0或者空(null),则插入的值也为自动增长后的值。如果插入某个确定的值,且该值在前面没有出现过,则可以直接插入。
(4)InnoDB存储引擎的除了支持外键(Foreign Key)和事务(Transaction)外还始支持全文检索。如果表需要执行大量的添加、删除、修改数据的操作,出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。
存储引擎MEMORY
MEMORY存储引擎是MySQL中的一类特殊的存储引擎。其使用存储在内存中的内容来创建表,而且所有数据也放在内存中。这些特性都与InnoDB存储引擎、MyISAM存储引擎不同。
每个MEMORY表可以放置数据量的大小受max_heap_table_size系统变量的约束,初始值为16MB,可按需求增大。此外,在定义MEMORY表时可通过max_rows子句定义表的最大行数。
每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件中存储表的结构。而其数据文件是存储在内存中。这样有利于对数据的快速的处理,提高整个表的处理效率。
该存储引擎主要用于那些内容稳定的表,或者作为统计操作的中间表。对于该类表需要注意的是,因为数据并没有实际写入磁盘,一旦重启,则会丢失。