(进阶7部分:存储引擎,索引【核心】,SQL优化,视图/存储过程/触发器,锁,innoDB引擎,MySQL管理)
Mysql体系结构
存储引擎简介
存储引擎特点
兼顾高可靠性和高性能的通用存储引擎,在mysql5.5之后,innoDB时mysql的默认存储引擎。
-- 查看当前数据库支持的数据引擎
SHOW ENGINES;
-- 创建表的时候指定存储引擎
create table xxx(......) engine = iniodb;
innoDB的特点:
文件
xxx.ibd(innoDB引擎的每一张表都对应这一个表空间文件)存储该表的表结构(frm,sdi),数据和索引。
参数:innodb_file_per_table(mysql8.0默认打开,标识每一张表都对应一个表空间文件)
-- 查看表空间文件的开关
show variables like 'innodb_file_table';
C:\ProgramData\MySQL\MySQL Server 8.0\Data
存放当前数据库的表结构,当前数据库中存放的数据,索引,此文件为二进制,不可以直接查看查看方式:ibd2sdi account.ibd
innoDB的逻辑存储结构
MyISAM是mysql早期的默认存储引擎。
Memory存储引擎,数据存储到内存中,由于受到硬件影响,或者断电的影响,只能将这些表作为临时表或缓存使用
Memory的特点:
文件
.sdi存储表结构(因为数据都存放在内存)
三种存储引擎的区别:
特点 | InnoDB | MyISAM | Memory |
---|---|---|---|
存储限制 | 64TB | 有 | 有 |
事务安全 | 支持 | - | - |
锁机制 | 行锁 | 表锁 | 表锁 |
B+tree索引 | 支持 | 支持 | 支持 |
Hash索引 | - | - | 支持 |
全文检索 | 支持(5.6版本之后) | 支持 | - |
空间使用 | 高 | 低 | N/A |
内存使用 | 高 | 低 | 中等 |
批量插入速度 | 低 | 高 | 高 |
支持外键 | 支持 | - | - |
存储引擎应用
根据应用系统的特点选择合适的存储引擎。对复杂的系统,还可以根据实际情况选择多种存储引擎进行组合。