Amazon redshift 评估红移中的真空将释放多少空间

Amazon redshift 评估红移中的真空将释放多少空间,amazon-redshift,Amazon Redshift,根据AWS文件: Amazon Redshift不会自动回收和重用删除行和更新行时释放的空间 在运行真空之前,是否有方法知道或评估真空将从磁盘中释放多少空间 Thx 参考资料: 这不是一种非常精确的方法,但您可以查询svv\u table\u info并查找删除的列\u pct。这将让您大致了解表中哪些部分需要使用vacuum重建 您可以对系统中的所有表运行它,以获得整个系统的估计值。您可以通过在视图中查找tbl_rows列来计算从真空命令中释放的存储量。这包括标记为删除的行。将其与同一表中的

根据AWS文件:

Amazon Redshift不会自动回收和重用删除行和更新行时释放的空间

在运行真空之前,是否有方法知道或评估真空将从磁盘中释放多少空间

Thx

参考资料:


这不是一种非常精确的方法,但您可以查询svv\u table\u info并查找删除的列\u pct。这将让您大致了解表中哪些部分需要使用vacuum重建


您可以对系统中的所有表运行它,以获得整个系统的估计值。

您可以通过在视图中查找tbl_rows列来计算从真空命令中释放的存储量。这包括标记为删除的行。将其与同一表中的select count(*)进行比较,您将得到一个比率。在一个名为factsales的理论表格上,类似这样的东西

select    (select cast(count(*) as numeric(12,0)) from factsales) /
    cast(tbl_rows as numeric(12,0))
    as "percentage of non deleted rows" 
    from svv_table_info where "table" = 'factsales'

似乎没有一种直接的方法来执行动态SQL和游标,因此要在所有表中获得相同的比率,您必须从外部源代码或编程语言(例如python)执行代码。

没有这样的列。最接近的是pct_used,但它只告诉您整个表的容量中使用了多少空间,而不告诉您准备删除的空间。不管怎么说,这个表很有趣,向上投票:-)你从这个表中得到了一半的信息,tbl_rows col包含了所有的行,包括那些标记为删除的行。我发布了一个更详细的答案。如果您试图评估真空的需求,请不要忘记真空实际上也会根据排序键对数据进行排序。也不建议太接近磁盘存储限制,因为查询创建的临时表需要磁盘存储限制。尽量保持在70%以下,以获得最佳性能。