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

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

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

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

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