Azure Databricks 上的表大小

针对 Delta Lake 和 Apache Iceberg 表报告的表大小不同于云对象存储中相应文件目录的总大小。 这些数据格式保留以前版本的数据文件,以允许时间旅行查询。 只有在超过保留阈值后运行 VACUUM,才会删除数据文件。 请参阅使用 vacuum 删除未使用的数据文件

表大小为何不同于目录大小

Azure Databricks 中通过 UI 和 DESCRIBE 命令显示的表大小,是指当前版本的表所引用的数据文件在存储中的总大小。 写入表的大多数操作都需要重写基础数据文件,并保留旧数据文件以允许时间旅行查询。

注意

如果定期删除或更新表中的记录,删除向量可以加速查询并减少数据文件的总大小。 请参阅 Databricks 中的删除向量

计算表的存储指标

适用于:选中“是” Databricks Runtime 18.0 及更高版本

若要了解总存储大小与表大小有何不同,请使用 ANALYZE TABLE … COMPUTE STORAGE METRICS。 此命令显示存储分配的详细细分,帮助你:

  • 确定成本优化机会:查看可回收多少存储 VACUUM
  • 分析时间旅行开销:了解保留历史数据的成本
  • 跟踪存储模式:通过定期运行命令来监视表存储随时间变化的方式
  • 审核跨表存储:在循环中运行命令以分析整个数据资产库

该命令返回全面的指标,包括:

  • 总存储大小:完整占用空间,包括所有数据、元数据和日志
  • 活动数据:当前表版本的大小
  • 可清空数据:可回收的空间
  • 时间旅行数据:用于回滚的历史数据

请参阅 ANALYZE TABLE...计算存储指标 的完整语法和示例。

VACUUM 存储指标

使用 VACUUM 清理未使用的数据文件或使用 DRY RUN 预览要删除的文件集时,指标将报告已删除的文件数和大小。 删除 VACUUM 的文件的大小和数量会大不相同,但已删除文件的大小通常超过当前版本的表的总大小。

OPTIMIZE 存储指标

OPTIMIZE 在目标表上运行时,新数据文件会合并现有数据文件中的记录。 在 OPTIMIZE 期间提交的更改仅影响数据组织,底层数据内容不会发生任何变化。 运行后 OPTIMIZE ,表的基础数据文件的总大小会增加,因为新的压缩文件与旧的未优化数据文件共存于包含目录中。

运行 OPTIMIZE 后报告的表大小通常小于运行 OPTIMIZE 前的大小,因为当前表版本引用的数据文件的总大小会随着数据压缩而减少。 若要删除基础数据文件, VACUUM 必须在保留阈值通过后运行。

注意

你可能会看到类似操作的指标,例如 REORG TABLEDROP FEATURE。 需要重写数据文件的所有操作都会增加包含目录中的总数据大小,直到 VACUUM 删除当前表版本中不再引用的数据文件。