真空不会回收磁盘空间

时间:2014-04-04 17:47:51

标签: amazon-redshift

我有一个包含9.5M记录的事实表。 该表使用distyle = key,并托管在具有2个“小”节点的RedShift集群上。

我在表上做了很多UPDATE和DELETE操作,正如预期的那样,我看到“实际”行数大大超过9.5M。

因此,我在桌子上运行真空,令我惊讶的是,在真空结束后,我仍然看到表格分配的“行”数量没有回到9.5M记录。

请问你可以建议这种行为的原因是什么?

解决问题的最佳方法是什么?

我的shell中的一些复制贴:

我正在讨论的事实表:

select count(1) from tbl_facts;
9597184

数据库中的“实际”记录数:

select * from stv_tbl_perm where id= 332469;
slice | id | name | rows | sorted_rows | temp | db_id | insert_pristine | delete_pristine
-------+--------+--------------------------------------------------------------------------+----------+-------------+------+--------+-----------------+-----------------
0 | 332469 | tbl_facts | 24108360 | 24108360 | 0 | 108411 | 0 | 1
2 | 332469 | tbl_facts | 24307733 | 24307733 | 0 | 108411 | 0 | 1
3 | 332469 | tbl_facts | 24370022 | 24370022 | 0 | 108411 | 0 | 1
1 | 332469 | tbl_facts | 24597685 | 24597685 | 0 | 108411 | 0 | 1
3211 | 332469 | tbl_facts | 0 | 0 | 0 | 108411 | 3 | 0

(总共几乎是100M记录)。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为你需要为特定的事实表运行分析。运行vacuum(或行数更改的任何其他命令)后,Analyze将更新链接到事实表的统计信息。

如果是这种情况,请告诉我们(我没有方便的表格,我可以测试一下): - )