我有一个包含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记录)。
非常感谢!
答案 0 :(得分:0)
我认为你需要为特定的事实表运行分析。运行vacuum(或行数更改的任何其他命令)后,Analyze将更新链接到事实表的统计信息。
如果是这种情况,请告诉我们(我没有方便的表格,我可以测试一下): - )