在线视频教学网站建设,北京同仁医院眼科医生免费咨询,做网站应该注意些什么问题,黑猫会活动策划网站一、MySQL 执行引擎
在 MySQL 中#xff0c;执行引擎#xff08;存储引擎#xff0c;Storage Engine#xff09; 是数据库的核心组件之一#xff0c;负责数据的存储、检索、更新、删除等底层实现。
MySQL 中几种常见的执行引擎#xff1a;
引擎名称是否支持事务是否支…一、MySQL 执行引擎
在 MySQL 中执行引擎存储引擎Storage Engine 是数据库的核心组件之一负责数据的存储、检索、更新、删除等底层实现。
MySQL 中几种常见的执行引擎
引擎名称是否支持事务是否支持行级锁是否支持外键索引类型特点简述适用场景InnoDB✅✅✅B 树、全文索引等默认引擎支持事务、崩溃恢复、行锁多版本控制 (MVCC)高并发写、事务场景MyISAM❌❌ 表锁❌B 树、全文索引等读性能好占用资源少但不支持事务和行锁只读场景、日志分析Memory❌❌ 表锁❌哈希索引、B 树索引可选数据存储在内存中速度快重启即丢数据缓存临时数据、排序中间结果CSV❌❌❌无每个表一个 .csv 文件便于导入导出简单数据交换场景Archive❌❌❌无或极简索引高压缩比适合只写不读的归档数据日志归档、历史数据Federated❌❌❌依赖远程端索引查询远程服务器上的表类似数据库间连接跨库查询NDBCluster✅✅✅哈希、B树分布式存储适用于 MySQL Cluster高可用、高冗余高可用集群部署
二、执行引擎分类
1. InnoDB默认
支持事务ACID、两阶段提交支持 MVCC多版本并发控制支持外键唯一支持外键约束的引擎行级锁减少锁冲突适合并发Crash-safe配合 redo log 和 undo logB 树索引聚簇索引主键 二级索引。
适用于大多数业务系统尤其是有事务需求、并发高的 OLTP 系统。
2. MyISAM
不支持事务和外键表级锁读取快但写入竞争大压缩表支持MyISAM 表可以压缩提高存储效率全文索引支持早在老版本 MySQL 中早于 InnoDB 支持全文索引。
适用于以读为主的报表系统或数据仓库但已逐渐被 InnoDB 替代。
3. MemoryHeap
数据存储在内存中速度极快但 断电/重启即丢数据仅表级锁默认使用 哈希索引也可改为 B 树。
适用于临时表、排行榜、会话数据等不需要持久化的高速读写场景。
4. Archive
只支持 INSERT 和 SELECT高压缩比、低存储开销不支持索引或只支持 minimal 索引。
适用于日志归档、审计数据存储等写多读少的业务。
5. Federated
表数据存在远程服务器本地仅存连接信息查询时连接远端执行不支持事务、索引依赖远程库。
适用于简单跨数据库查询但存在网络延迟和维护问题。
三、查看和指定执行引擎
查看当前表的执行引擎
SHOW TABLE STATUS WHERE Name your_table;或
SHOW CREATE TABLE your_table;指定表的执行引擎
CREATE TABLE example (id INT PRIMARY KEY,name VARCHAR(50)
) ENGINE InnoDB;四、执行引擎工作流程
在 MySQL 中执行引擎准确说是存储引擎的工作流程是在语法层、优化层处理完后如何真正与底层数据交互、执行具体操作的过程。
1. SQL 执行整体流程与执行引擎的关系
客户端 SQL - 连接层 - 分析器 - 优化器 - 执行器 - 执行引擎存储引擎 - 磁盘数据执行引擎是在执行器调度下真正执行对数据的增删改查操作的底层组件。
2. 执行引擎工作流程以 InnoDB 为例
以查询语句为例
SELECT * FROM users WHERE id 1;执行引擎处理流程如下图所示
┌──────────────────────────┐
│ 执行器 │ ← 解析SQL后决定使用 InnoDB
└────────────┬─────────────┘↓
┌──────────────────────────┐
│ InnoDB 执行引擎 │ ← 执行器调用接口如 row_search_for_mysql()
├──────────────────────────┤
│ 1. 检查 Buffer Pool │ ← 内存中是否已有页缓存
│ 2. 否 → 读取磁盘页 → 缓存 │
│ 3. 扫描索引如 B 树 │ ← 聚簇索引/辅助索引
│ 4. 返回数据行 │
└──────────────────────────┘五、InnoDB 执行引擎模块
模块功能说明Buffer Pool内存缓存页索引页、数据页、undo页优先读取缓存未命中则从磁盘读入索引管理器支持聚簇索引主键和二级索引普通索引B树结构快速定位事务管理器支持 ACID管理 Redo Log、Undo Log控制 MVCC 和锁锁管理器提供行级锁、意向锁、Gap锁、Next-key锁等日志管理器Redo Log恢复Undo Log回滚、MVCCBinlog复制文件管理器管理表空间、页文件、数据页读写协调磁盘I/O
六、不同操作的执行流程
1. 查询SELECT
SELECT * FROM users WHERE id 1;流程如下
执行器调用 InnoDB查找 Buffer Pool缓存页若无磁盘读取页使用聚簇索引/二级索引定位记录返回数据 记录一致性读版本MVCC 若是 FOR UPDATE 则获取排他锁。 2. 插入INSERT
INSERT INTO users (name) VALUES (Alice);流程
构造记录 → 写 Buffer Pool记录 Undo Log用于回滚写 Redo Logprepare提交时写 Binlog Redo commit后台刷脏页到磁盘。
3. 更新/删除UPDATE / DELETE
流程类似插入区别在于
扫描行 → 检查可见性MVCC修改时生成 Undo 版本并在提交前记录 redo、binlog。