存储引擎
一、 查看当前的存储引擎
show variables like '%storage_engine';
show engines;
二、 MySQL常用的存储引擎
功能 | MYISAM | Memory | InnoDB | Archive |
---|---|---|---|---|
存储限制 | 256TB | RAM | 64TB | None |
支持事务 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持数索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |
1.InnoDB
事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。
2.MyISAM
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有极高的插入、查询速度,但不支持事务。
3.MEMORY
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。
存储引擎的选择
对插入和并发性能要求较高的,或者需要外键,或者需要事务支持的情况下,需要选择InnoDB。插入较少,查询较多的场景,优先考虑MyISAM。
三、 使用引擎
一般在建表时添加
create table test(
name varchar(10)
)engine=MyISAM charset=utf8;
create table test_1(
name varchar(10)
)engine=InnoDB charset=utf8;
四、 InnoDB和MyISAM的文件方面的区别
1.InnoDB将一张表存储为两个文件
- demo.frm -> 存储表的结构和索引
- demo.ibd -> 存储数据。ibd存储是有限的,存储不足自动创建ibd1,ibd2
InnoDB的文件创建在对应的数据库中,不能任意的移动
2.MyISAM将一张表存储为三个文件
- demo.frm -> 存储表的结构
- demo.MYD -> 存储数据
- demo.MYI -> 存储表的索引
MyISAM的文件可以任意的移动