Jw
首页
技术
英语
首页
技术
英语
  • MySQL

    • MySQL 基础
    • 环境变量配置(PATH)
    • SQL 语法与分类
    • MySQL 数据类型
    • SQL - DDL 数据定义语言
    • SQL - DML 数据操作语言
    • SQL - DQL 数据查询语言
    • SQL - DCL 数据控制语言
    • MySQL 函数
    • SQL 约束
    • SQL 外键约束
    • 多表关系
    • 多表查询(连接查询)
    • 隐式内连接 vs 显式内连接
    • 子查询
    • 多表查询案例
    • 事务
    • 并发事务问题与隔离级别
    • MySQL 体系结构与存储引擎
    • 索引概述
    • 索引结构
    • 索引分类
    • 索引语法
    • SQL 性能分析
    • 索引使用
    • 索引设计原则
    • SQL 优化 - 插入数据与主键优化
    • SQL 优化 - order by 与 group by
    • SQL 优化 - limit / count / update
    • 视图
    • 存储过程
    • 存储过程 - 变量
    • 存储过程 - 流程控制、游标与条件处理
    • 存储函数
    • 触发器
    • 锁概述与全局锁
    • 表级锁
    • 行级锁
    • InnoDB 逻辑存储结构
    • InnoDB 架构
    • 事务原理(redo / undo log)
    • MVCC
    • MySQL 系统数据库
    • MySQL 常用工具
    • 数据备份与导入导出
    • 错误日志与二进制日志
    • 查询日志与慢查询日志
    • 主从复制 - 概述与原理
    • 主从复制 - 搭建
    • Mycat 配置
    • Mycat 垂直拆分与水平拆分
    • Mycat 分片规则
    • Mycat 管理与监控
    • Mycat 读写分离 - 一主一从
    • Mycat 读写分离 - 双主双从

MySQL 体系结构与存储引擎

一、MySQL 体系结构

层级职责
连接层最上层是客户端和链接服务,完成连接处理、授权认证及相关的安全方案;服务器会为每个安全接入的客户端验证其操作权限
服务层完成大多数核心服务功能:SQL 接口、缓存的查询、SQL 的分析与优化、部分内置函数的执行;所有跨存储引擎的功能(过程、函数等)也在这一层实现
引擎层存储引擎真正负责 MySQL 中数据的存储和提取,服务器通过 API 与存储引擎通信;不同引擎功能不同,可按需选择
存储层将数据存储在文件系统之上,并完成与存储引擎的交互

二、存储引擎简介

  • 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式;
  • 存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
-- 查看当前数据库支持的存储引擎
SHOW ENGINES;

-- 建表时指定存储引擎
CREATE TABLE 表名(
    字段1 字段1类型 [COMMENT 字段1注释],
    ...
    字段n 字段n类型 [COMMENT 字段n注释]
) ENGINE = INNODB [COMMENT 表注释];

-- 查看已有表的建表语句(可看到使用的存储引擎,默认 InnoDB)
SHOW CREATE TABLE account;

-- 指定其他引擎
CREATE TABLE my_myisam(id INT, name VARCHAR(10)) ENGINE = MyISAM;
CREATE TABLE my_memory(id INT, name VARCHAR(10)) ENGINE = Memory;

三、常见存储引擎特点

InnoDB

  • 介绍:兼顾高可靠性和高性能的通用存储引擎,MySQL 5.5 之后是默认存储引擎;
  • 特点:DML 操作遵循 ACID 模型,支持事务;行级锁,提高并发访问性能;支持外键约束,保证数据的完整性和正确性;
  • 文件:xxx.ibd(xxx 为表名),每张表对应一个表空间文件,存储该表的表结构、数据和索引;参数 innodb_file_per_table。

逻辑存储结构:

Tablespace(表空间)
└── Segment(段)
    └── Extent(区,1M)
        └── Page(页,16K)
            └── Row(行:Trx id / Roll pointer / col1 / col2 ...)

MyISAM

  • 介绍:MySQL 早期的默认存储引擎;
  • 特点:不支持事务、不支持外键;支持表锁,不支持行锁;访问速度快;
  • 文件:xxx.sdi 存储表结构信息、xxx.MYD 存储数据、xxx.MYI 存储索引。

Memory

  • 介绍:表数据存储在内存中,受硬件问题或断电影响,只能将这些表作为临时表或缓存使用;
  • 特点:内存存放、hash 索引(默认);
  • 文件:xxx.sdi 存储表结构信息。

三者对比

特点InnoDBMyISAMMemory
存储限制64TB有有
事务安全支持--
锁机制行锁表锁表锁
B+tree 索引支持支持支持
Hash 索引--支持
全文索引支持(5.6 版本之后)支持-
空间使用高低N/A
内存使用高低中等
批量插入速度低高高
支持外键支持--

四、存储引擎选择

引擎适用场景
InnoDB对事务的完整性有较高要求、并发条件下要求数据一致性,数据操作除了插入和查询之外还有较多的更新、删除 → 首选
MyISAM以读操作和插入操作为主,更新、删除很少,对事务完整性、并发性要求不高
Memory所有数据保存在内存中、访问速度快,通常用于临时表及缓存;缺陷是对表的大小有限制,太大的表无法缓存在内存中,且无法保障数据安全

相关

  • 索引概述:索引是什么、优缺点
  • 索引结构:B+Tree / Hash 等
  • 事务:InnoDB 支持事务与行级锁
  • InnoDB 架构:InnoDB 的内存 / 磁盘结构与后台线程
  • MVCC:快照读与多版本并发控制
最近更新: 2026/10/25 11:01
Contributors: liujw
Prev
并发事务问题与隔离级别
Next
索引概述