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

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

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

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

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