• MySQL 灵魂拷问:你的数据页藏着多少「反常识」?

MySQL 灵魂拷问:你的数据页藏着多少「反常识」?

2025-06-19 08:37:04 栏目:宝塔面板 42 阅读

你是否曾被这些问题困扰?

  • 表里只有 100 条记录,查询时 InnoDB 却读了 1000 行数据?
  • 删除大量数据后,表文件大小纹丝不动?
  • 1KB 的记录,16KB 的数据页为啥只能存 15 条?

这些「反常识」现象的背后,藏着 InnoDB 数据页的精妙设计。今天咱们就像拆盲盒一样,层层剥开这个 16KB 存储单元的秘密,让你彻底搞懂 MySQL 的数据存储逻辑!

一、整体架构:16KB 的「集装箱式」数据仓库

数据页作为 InnoDB 最基本的存储单位,大小固定为 16KB。它内部划分为 7 大功能模块。

数据页结构:七大模块解析。

模块名称

中文名

占用空间

作用解析

File Header

文件头

38字节

记录页号、前后页指针等元数据,用于页的定位和导航

Page Header

页头

56字节

记录页内记录数量、空闲空间、第一条记录位置等统计信息

Infimum+Supremum

伪记录

固定大小

标记页内记录的最小值和最大值,确保记录有序性

User Records

用户记录

动态变化

实际存储数据的地方,采用链表结构组织记录

Free Space

空闲空间

动态变化

存储可重用的空间,DELETE后空间不立即释放

Page Directory

页目录

动态变化

记录分组信息,用于快速定位记录位置

File Trailer

文件尾

8字节

存储校验和,确保数据完整性

看到这里,你可能会问:这么复杂的结构,真的有必要吗?别急,接下来我们就通过几个「颠覆认知」的问题,揭开数据页设计背后的秘密。

二、硬核拆解:3 个颠覆认知的存储秘密

真相一:1KB 记录 ×16KB 页 = 15 条?空间都去哪了?

❓ 疑惑: 16KB 理论上能存 16 条 1KB 记录,但实际只能存 15 条甚至更少。

本文地址:https://www.yitenyun.com/295.html

搜索文章

Tags

数据库 API FastAPI Calcite 电商系统 MySQL Web 应用 异步数据库 数据同步 ACK 双主架构 循环复制 Deepseek 宝塔面板 Linux宝塔 Docker 生命周期 JumpServer JumpServer安装 堡垒机安装 Linux安装JumpServer 序列 核心机制 esxi esxi6 root密码不对 无法登录 web无法登录 Windows Windows server net3.5 .NET 安装出错 宝塔面板打不开 宝塔面板无法访问 SSL 堡垒机 跳板机 HTTPS 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 无法访问宝塔面板 HTTPS加密 连接控制 机制 Windows宝塔 Mysql重置密码 ES 协同 HexHub Serverless 无服务器 语言 Oracle 处理机制 运维 技术 Spring SQL 动态查询 响应模型 Redis 异步化 索引 自定义序列化 scp Linux的scp怎么用 scp上传 scp下载 scp命令 OB 单机版 查询 group by 缓存方案 缓存架构 缓存穿透 电商 系统 分页查询 InnoDB 数据库锁 数据 主库 开源 PostgreSQL 存储引擎 监控 工具 服务器 管理口 存储 日志文件 MIXED 3 架构 流量 Rsync R edis 线程 修改DNS Centos7如何修改DNS RocketMQ 长轮询 配置 Linux 安全 高可用 sftp 服务器 参数 • 索引 • 数据库 防火墙 黑客 MySQL 9.3 SQLark 聚簇 非聚簇 ​Redis 机器学习 推荐模型 SQLite-Web SQLite 数据库管理工具 AI 助手 信息化 智能运维 缓存 核心架构 订阅机制 GreatSQL 连接数 同城 双活 共享锁 优化 万能公式 RDB AOF Postgres OTel Iceberg 云原生 业务 prometheus Alert 数据备份 SVM Embedding 线上 库存 预扣 PG DBA Doris SeaTunnel 人工智能 向量数据库 推荐系统 Ftp Recursive MVCC 加密 场景 Redisson 锁芯 Python 模型 网络架构 网络配置 INSERT COMPACT redo log 重做日志 Canal B+Tree ID 字段 向量库 Milvus 事务 Java 开发 窗口 函数 高效统计 今天这篇文章就跟大家 Netstat Linux 服务器 端口 引擎 性能 网络故障 Redis 8.0 微软 SQL Server AI功能 大模型 Web Hash 字段 不宕机 数据脱敏 加密算法 IT运维 自动重启 mini-redis INCR指令 Undo Log 分库 分表 MongoDB 容器 崖山 新版本 Entity openHalo 数据分类 sqlmock 分布式 集中式 虚拟服务器 虚拟机 内存 读写 单点故障 磁盘架构 DBMS 管理系统 数据类型 LRU SpringAI OAuth2 Token ZODB 悲观锁 乐观锁 数据集成工具 容器化 启动故障 JOIN StarRocks 数据仓库 QPS 高并发 Redka 分布式架构 分布式锁​ R2DBC 原子性 filelock 大表 业务场景 排行榜 排序 Testcloud 云端自动化 意向锁 记录锁 PostGIS 分页 数据结构 EasyExcel MySQL8 部署 聚簇索引 非聚簇索引 数据页 AIOPS Pottery dbt 数据转换工具 1 IT Caffeine CP InfluxDB RAG HelixDB MCP 开放协议 Web 接口 Order SSH 池化技术 连接池 事务隔离 网络 字典 传统数据库 向量化 工具链 发件箱模式 Go 数据库迁移 双引擎 对象 速度 服务器中毒 仪表盘 频繁 Codis Crash 代码 优化器 单线程 日志 分页方案 排版 LLM 线程安全 订单 List 类型 Ansible Pump 事务同步 UUIDv7 主键