数据库存储引擎是数据库的底层软件组织,数据库管理系统(DBMS)使用数据引擎来创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技术、锁定级别等。 许多不同的数据库管理系统现在支持许多不同的数据引擎。
MySQL的核心是存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎可以使用SHOW ENGINES命令查看MySQL的所有执行引擎。 默认的执行引擎是innoDB,它支持事务、行级锁和外键。
一、分类
MyISAM:MySQL5.5之前默认的数据库引擎,最常用。具有较高的插入和查询速度,但不支持事务。
InnoDB:事务速记首选引擎,支持ACID事务,支持行级锁,MySQL5.5成为默认数据库引擎。
Memory:一种存储引擎,将所有数据存储在内存中,具有极高的插入、更新和查询效率。但是它会占用与数据量成正比的内存空间。并且InnoDB重启后其内容会丢失。
Archive:非常适合存储大量独立的历史数据。 因为不经常阅读。Archive 具有高效的插入速度,但对查询的支持相对较差。
Federated:将不同的MySQL服务器组合起来,在逻辑上形成一个完整的数据库。分布式应用程序的理想选择。
CSV:一种存储引擎,在逻辑上用逗号分隔数据。 它将为数据库子目录中的每个表创建一个 .csv 文件。 这是一个纯文本文件,每一行数据占据一个文本行。 CSV 存储引擎不支持索引。
BlackHole:黑洞引擎,任何写入的数据都会消失,一般用来记录binlog作为replication的relay
ERFORMANCE_SCHEMA 存储引擎:该引擎主要用于收集数据库服务器性能参数。
Mrg_Myisam Merge存储引擎:MyISAM的组合。 也就是说聚合了MyISAM引擎的多个表,但是里面没有数据。 真正的数据还在MyISAM引擎的表中,但是可以直接查询、删除更新等操作。
二、操作
-- 查询当前数据库支持的存储引擎:
show engines;
-- 查看当前的默认存储引擎:
show variables like ‘%storage_engine%’;
-- 查看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
show create table student;
-- 创建新表时指定存储引擎:
create table(...) engine=MyISAM;
-- 修改数据库引擎
alter table student engine = INNODB;
alter table student engine = MyISAM;
修改MySQL默认存储引擎方法
1. 关闭MySQL服务。
2. 找到MySQL安装目录下的my.ini文件。
3. 找到default-storage-engine=INNODB 改为目标引擎。如:default-storage-engine=MYISAM。
4. 启动MySQL服务。