存储引擎
存储引擎就是指表的类型。接收上层传下来的指令,然后对表中的数据进行提取或写入操作。
一、查看存储引擎相关的参数
1、查看存储引擎
show engines;
2、查看默认的存储引擎
show variables like '%default_storage_engine%';
select @@default_storage_engine;
3、修改默认的存储引擎
- 执行 sql
SET DEFAULT_STORAGE_ENGINE=MyISAM;
- 修改 my.cnf(需重启 mysql 服务)
default-storage-engine=MyISAM
4、设置/修改表的存储引擎
不同的表可以设置不同的存储引擎。
- 创建表的时候设置存储引擎
create table emp_mysiam(
id int primary key
) engine = myisam
- 修改表的存储引擎
alter table emp_myisam engine = innodb;
二、InnoDB
- 支持外键
<span style="color: red">支持事务</span>
(commit、rollback)- 支持行级锁
- 会缓存索引和真实数据
<span style="color: red">InnoDB 是为处理巨大数据量的最大性能设计的</span>
- 写效率比 MyISAM 差,且会占用更多的磁盘空间以保存数据和索引
- InnoDB 不仅缓存索引,还缓存数据,所以
<span style="color: red">InnoDB 对内存要求较高</span>
,内存大小对性能有决定性影响 <span style="color: red">5.5 及以后的默认的存储引擎</span>
- 数据结构文件
- 表名.frm:存储表结构(MySQL 8.0 之后合并到 表名.idb 中)
- 表名.idb :存储表数据
三、MyISAM
- 不支持事务、行级锁、外键,只支持表级锁。(崩溃后无法恢复)
<span style="color: red">5.5 之前默认的存储引擎</span>
- 访问速度快。(用于对事物没有要求或以 selec、update为主的应用)
- 针对数据统计有额外的常数存储。故而 count(*) 的查询效 率很高
- 只缓存索引,不缓存真实数据