MySQL INFORMATION_SCHEMA.TABLES data_free 判断碎片-SQL

data_free 是 INFORMATION_SCHEMA.TABLES 中表示 InnoDB 表已分配但未使用的字节数的字段,反映因页分裂、删除等导致的磁盘空间浪费,常用于评估是否需 OPTIMIZE TABLE;其值通常为 0 或 4MB 整数倍,且仅在 innodb_file_per_table=ON 且 ROW_FORMAT=COMPACT/DYNAMIC 时有效。

data_free 是什么,为什么能反映碎片

data_free 是 INFORMATION_SCHEMA.TABLES 中的一个字段,表示表在磁盘上已分配但未被数据实际使用的字节数(单位:字节)。它主要来自 InnoDB 的“空闲页”(free pages)或“未填充的页间隙”,不是精确的碎片度量,但对判断是否需要 OPTIMIZE TABLE 有参考价值。

注意:data_free 在 MyISAM 表中含义不同(是删除行后留下的空洞),而 InnoDB 下它更接近“因页分裂、删除、更新导致的未利用空间”,但不等于可回收的碎片总量——比如自增主键连续插入后删除中间行,data_free 可能很小,但逻辑碎片仍存在。

  • InnoDB 表的 data_free 值通常为 0 或 4MB 的整数倍(与 extent 分配机制有关)
  • 只有 ROW_FORMAT=COMPACT 或 DYNAMIC 且启用了 innodb_file_per_table=ON 时,该值才较有意义
  • data_free 不会实时更新,需执行 ANALYZE TABLE 或等待后台刷脏页后才可能变化

怎么查 data_free 并识别高碎片表

直接查 INFORMATION_SCHEMA.TABLES 即可,但要注意过滤条件和单位换算:

SELECT 
  table_schema,
  table_name,
  ROUND(data_length / 1024 / 1024, 2) AS data_mb,
  ROUND(data_free / 1024 / 1024, 2) AS free_mb,
  ROUND(data_free / data_length * 100, 2) AS free_pct
FROM INFORMATION_SCHEMA.TABLES 
WHERE engine = 'InnoDB' 
  AND table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
  AND data_length > 0 
  AND data_free > 0
ORDER BY free_pct DESC LIMIT 20;
  • 必须加 data_length > 0,否则除零报错;data_free > 0 排除无意义的 0 值
  • 按 free_pct 排序比只看 free_mb 更合理——10GB 表占 100MB 空闲 vs 100MB 表占 100MB 空闲,后者更值得优化
  • 若 free_pct > 25% 且表频繁更新/删除,可视为高碎片候选;但 free_pct 一般无需干预

data_free 为 0 就代表没碎片?

不一定。常见误判场景:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » MySQL INFORMATION_SCHEMA.TABLES data_free 判断碎片-SQL
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4003237+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4003237+
  • 本周更新: 0+
  • 最后更新: 2026-03-16