我想分析最近通过 OPTIMIZE 命令优化的数据块上的增量表分区的大小。
我想知道我是否只是将分区文件夹中每个镶木地板文件的大小相加,这会产生我正在寻找的正确数字,还是 OPTIMIZE 会创建新的、更大的镶木地板文件,而该文件夹仍包含旧文件,未被使用增量表不再扭曲我的计算。 如果是这种情况,VACUUM 可以解决这个问题吗?还有其他更智能的方法来观察分区大小吗?
提前非常感谢!
或者 OPTIMIZE 是否创建新的、更大的镶木地板文件,而文件夹仍包含旧文件,增量表不再使用这些文件,从而扭曲我的计算
为了支持时间旅行功能,达美将创建并维护所需数量的表版本。所以你是部分正确的。表的“当前/最新”版本中存在未使用的文件。虽然如果你使用时间旅行,它们可能会被使用。
例如请参阅本页面中的“Delta Lake 优化:真空”部分。
VACUUM 可以解决这个问题吗
基于此我会“猜测”是的。如果你VACUUM my_table RETAIN 0 HOURS
。但就我个人而言,我有点怀疑,因为增量表的文件结构不是官方记录/保证的接口。
观察分区大小的更智能方法?
VACUUM my_table RETAIN 0 HOURS
,然后总结分区文件夹的大小可能是最好的选择。虽然以下指标专门不是按分区划分的,因此可能对您的目的毫无用处,但请查看 命令。 请参阅
operationMetrics
输出中的
DESCRIBE HISTORY my_table WHERE operation='OPTIMIZE'
列。对于给定的 OPTIMIZE 操作,它会打印
numAddedFiles, numRemovedFiles, numAddedBytes, numRemovedBytes, minFileSize, p25FileSize, p50FileSize, p75FileSize, maxFileSize
。