【MySQL9】进阶篇 | 存储引擎

MySQL 进阶 学习大纲

  1. 存储引擎(本篇)
  2. 索引
  3. SQL 优化
  4. 视图 / 存储过程 / 触发器
  5. MySQL 锁机制
  6. InnoDB 引擎深度详解
  7. MySQL 运维管理

一、MySQL 整体体系结构

MySQL 整体分为四层架构,自上而下层层解耦,其中索引、存储引擎属于核心底层模块。

1. 四层架构拆解

  • 客户端连接层:负责客户端连接、请求接入
  • Server 服务层(核心服务层)
    • 连接池:管理数据库连接、授权认证、权限校验
    • SQL 接口:接收、处理用户 SQL 语句
    • 解析器:语法解析、语义校验、生成语法树
    • 查询优化器:优化 SQL 执行计划,选择最优执行方案
    • 查询缓存:缓存查询结果(高版本 MySQL 已废弃)
  • 存储引擎层(可插拔)
    • MySQL 核心特色:可插拔式存储引擎
    • 索引是在存储引擎层实现的,不同引擎索引机制不同
  • 物理存储层:存放系统文件、数据文件、日志文件等底层磁盘数据

二、存储引擎 核心简介

存储引擎相当于 MySQL 的数据发动机 ,负责数据表的数据存储、读取、索引维护、事务控制 等底层操作。 MySQL 支持多存储引擎,不同表可以使用不同存储引擎,灵活性极高。

1. MySQL 默认存储引擎

MySQL 5.5+ 之后默认存储引擎:InnoDB

2. 查看数据库支持的所有存储引擎

sql

sql 复制代码
-- 查看当前MySQL支持的所有存储引擎
SHOW ENGINES;

常用三大引擎:InnoDB、MyISAM、MEMORY

3. 建表时指定存储引擎

语法:建表语句末尾添加 ENGINE=引擎名

sql

sql 复制代码
-- 示例:创建 MyISAM 引擎数据表
create table my_myisam 
(
    id int null,
    name varchar(10) null
)
engine = MyISAM;

三、三大主流存储引擎详细特点

1. InnoDB 存储引擎(重点)

定位:兼顾高可靠性、高性能的通用事务型存储引擎,生产环境首选。

核心三大特性(面试必背)

  • 支持事务:DML 操作遵循 ACID 事务模型,保证数据一致性
  • 行级锁:锁粒度小,并发性能极高
  • 支持外键:保障表与表之间数据完整性、关联性

InnoDB 物理文件

每个 InnoDB 表独立表空间文件:xxx.ibd 作用:存储表结构、数据、索引所有数据

sql

sql 复制代码
-- 查看是否开启独立表空间(默认开启)
show variables like 'innodb_file_per_table';

InnoDB 逻辑存储结构(层级关系)

表空间 (Tablespace) → 段 (Segment) → 区 (Extent) → 页 (Page) → 行 (Row)

  • 页 (Page):InnoDB 最小 IO 单元
  • 行 (Row):最小数据存储单元

2. MyISAM 存储引擎(老旧默认引擎)

定位:早期 MySQL 默认引擎,主打高速查询,无事务支持。

核心特点

  • 不支持事务
  • 不支持外键
  • 表级锁:锁粒度大,并发性能差
  • ✅ 查询、插入速度极快

MyISAM 物理文件(三类)

  • xxx.sdi:存储表结构信息
  • xxx.MYD:专门存储表数据
  • xxx.MYI:专门存储表索引

3. MEMORY 存储引擎(内存引擎)

定位:数据全部存储在内存中,用作临时表、缓存表。

核心特点

  • 数据常驻内存,访问速度极快
  • 默认使用 Hash 索引
  • 服务重启数据丢失,无法持久化
  • 有表大小限制,不适合存储大数据量

物理文件

xxx.sdi:只保存表结构,数据不落地磁盘

四、InnoDB & MyISAM 核心区别(面试高频)

表格

对比维度 InnoDB MyISAM
事务支持 支持(ACID) 不支持
锁机制 行级锁(并发高) 表级锁(并发低)
外键约束 支持 不支持
数据安全 高,支持崩溃恢复 低,无事务保障
读写性能 读写均衡,适合高并发 读快、写差,适合纯读场景

五、存储引擎选型规范(生产实战)

1. InnoDB 适用场景(90% 业务首选)

适用于对事务完整性、数据一致性、并发性能要求高的业务:

  • 频繁更新、删除、修改的业务表
  • 需要事务、转账、订单、支付等核心业务
  • 需要外键关联、保证数据完整性的场景
  • 高并发访问的业务系统

2. MyISAM 适用场景

适用于多读少写、无事务、低并发的非核心业务:

  • 静态数据、日志数据、统计数据
  • 几乎只查询、极少修改删除的表
  • 对数据事务一致性无要求的场景

3. MEMORY 适用场景

  • 临时计算表、中间缓存表
  • 短期热点数据缓存,无需持久化数据
  • 对响应速度要求极高,可容忍数据丢失的场景

六、全文核心总结

  1. MySQL 架构分为:连接层、服务层、引擎层、存储层,索引在引擎层实现
  2. InnoDB 核心:事务、行锁、外键,生产环境首选
  3. MyISAM 核心:无事务、表锁、读快写慢
  4. MEMORY 核心:内存存储、速度快、不持久化
  5. 核心业务数据一律使用 InnoDB,非核心静态数据可酌情使用 MyISAM
相关推荐
long31610 小时前
MySQL 学习练习(配套 01 入门资料)
数据库·学习·mysql
大眼、不聚光13 小时前
5.mysql--主从同步安装部署
数据库·mysql
wWYy.15 小时前
Mysql:索引下推
数据库·mysql
long3161 天前
04-MySQL 扩展学习资料
数据库·mysql·adb
wWYy.1 天前
Mysql:二级索引
数据库·mysql
艾莉丝努力练剑1 天前
【MYSQL】MYSQL学习的一大重点:视图
android·服务器·数据库·学习·mysql·面试·视图
艾莉丝努力练剑1 天前
【MYSQL】MYSQL学习的一大重点:事务(下)- InnoDB 事务隔离性原理(MVCC 视角)
android·数据库·b树·sql·学习·mysql·面试
杨云龙UP1 天前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
心灵Haven2 天前
Centos7 + Mysql8.0
mysql·centos