第七课 进阶篇_存储引擎
一. MySQL体系结构
二. 存储引擎简介
是存储数据,建立索引,更新/查询数据等技术的实现方式.存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型.
1.在创建表时指定存储引擎
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
…
字段n 字段n类型[COMMENT 字段n注释]
)ENGINE=引擎名 [COMMENT 表注释];
2.查看当前数据库支持的存储引擎
SHOW ENGINES;
三. 存储引擎特点
1.InnoDB
一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5后,InnoDB是默认的MySQL存储引擎.
①特点:
DML操作遵循ACID模型,支持事务
行级锁,提高并发访问新能
支持外键FOREIGN KEY约束,保证数据的完整性和正确性
②文件:
xxx.ibd:innoDB引擎的每张表都会对应一个表空间文件,存储该表的表结构(frm,sdi),数据和索引
参数:innodb_file_per_table
默认打开(ON):每张表都对应一个表空间文件,关闭(OFF)多长表公用一个表空间文件
③查看变量:
show variables like 'innodb_file_per_table';
④提取表空间文件内的sdi
命令行输入:ibd2sdi 表空间文件名
C:\ProgramData\MySQL\MySQL Server 8.0\Data\test>ibd2sdi account.ibd
⑤逻辑存储结构
2.MySAM
是MySQL早期的默认存储引擎
①特点
不支持事务,不支持外键
支持表锁,不支持行锁
访问速度快
访问
②文件
xxx.sdi:表结构信息
xxx.MYD:表数据
xxx.MYI:表索引
③查看sdi文件
记事本打开全选复制→json.cn网站格式化
3.Memory
表数据存储时存在内存中,由于收到硬件或断电影响,只能将这些表作为临时表或缓存使用.
①特点
内存存放
hash索引(默认)
②文件
xxx.sdi:存储表结构
4.数据引擎区别
特点 | InnoDB | MyISAM | Memory |
---|---|---|---|
存储限制 | 64TB | 有 | 有 |
事务安全 | 支持 | – | – |
锁机制 | 行锁 | 表锁 | 表锁 |
B+tree索引 | 支持 | 支持 | 支持 |
Hash索引 | – | – | 支持 |
全文索引 | 支持(5.6版本之后) | 支持 | – |
空间使用 | 高 | 低 | N/A |
内存使用 | 高 | 低 | 中等 |
批量插入速度 | 低 | 高 | 高 |
支持外键 | 支持 | – | – |
四.存储引擎应用场景选择
InnoDB:应对事务的完整性有较高要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新,删除操作.
MySAM:以读操作和插入为主,只有很少的更新和删除操作,并且对事务的完整性,并发性要求不高.
MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存,对表的大小有限制,太大的表无法缓存在内存中,且无法保障数据安全.