2014-04-04 135 views
0

我有一個9.5M記錄的事實表。 該表使用distyle = key,並託管在具有2個「小」節點的RedShift羣集上。真空不回收磁盤空間

我在表格上做了很多UPDATE和DELETE操作,並且如我所料,我看到「真實」行數遠高於9.5M。

因此,我在桌子上運行了真空,令我驚訝的是,真空完成後,我仍然看到表中分配的「行數」沒有回到9.5M記錄。

請問您可能會建議什麼可能是這種行爲的原因?

什麼是最好的解決辦法?

從我的外殼複製粘貼的一點點:

我說的是事實表:

select count(1) from tbl_facts; 
9597184 

在DB的「真實」的多項紀錄:

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

確定真空完成後,檢查STL_VACUUM和STL_VACUUM_DETAIL表看有多少行被排序和刪除。真空中有多個階段,您可能只想運行真空刪除一次,以查看它是否實際上並未刪除行。 – androboy

回答

0

我認爲你需要爲特定的事實表運行分析。在運行vacuum(或其他行數改變的命令)後,分析將更新鏈接到事實表的統計信息。

做讓我們知道,如果是這種情況或沒有(我沒有表得心應手,我可以測試了這一點):-)