概念

  • 数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据
  • 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,现在许多不同的数据库管理系统都支持多种不同的数据引擎,MySQL的核心就是存储引擎
  • 用户可以根据不同的需求为数据库表选择不同的存储引擎
  • 可以使用show engines命令查看MySQL的所有存储引擎,可以看到默认的存储引擎是innoDB,它支持事务、行级锁和外键

分类

  • MyISAM:MySQL5.5之前的默认数据库引擎,最为常用,拥有较高的插入、查询速度,但不支持事务
  • InnoDB:事务性数据的首选引擎,支持ACID事务,支持行级锁,MySQL5.5成为默认存储引擎
  • Memory:所有数据置于内存的存储引擎,拥有较高的插入、更新和查询效率,但是会占用和数据量成正比的内存空间,并且其内容会在MySQL重新启动时丢失
  • Archive:非常适合存储大量的独立的,作为历史记录的数据,因为它们不经常被读取,Archive拥有高效的插入速度,但对查询的支持相对较差
  • Federated:将不同的MySQL服务器联合起来。逻辑上组成一个完整的数据库,适合分布式应用

功能

MyISAM

Memory

InnoDB

存储限制

256TB

RAM

64TB

支持事务

NO

NO

YES

支持全文索引

YES

NO

NO

支持B树索引

YES

YES

YES

支持哈希索引

NO

YES

NO

支持集群索引

NO

NO

YES

支持数据索引

NO

YES

YES

支持数据压缩

YES

NO

NO

空间使用率


N/A


支持外键

NO

NO

YES

操作

--查询当前数据库支持的存储引擎
show engines;
--查看当前的默认存储引擎
show variables like '%storage_engine%';
--查看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎)
show create table 表名;
--创建新表时指定存储引擎
create table 表名(...) engine = 存储引擎名;
--修改数据库引擎
alter table 表名 engine = 存储引擎名;