2015-01-07 51 views
6

我們有一個用例,我們需要每天用Cassandra中的當前數據重新創建一個表。爲此,我們應該使用drop table還是truncate table,這會很有效率?我們不希望數據被備份等?在Cassandra中刪除表或截斷表更好

感謝 ANKUR

回答

6

我認爲幾乎所有情況下截斷比下降重建一個更安全的操作。在過去使用ghost數據,模式分歧等進行刪除/重新創建時存在一些問題......雖然已經有許多嘗試使drop/recreate更加穩定的修復方法,但如果您每天執行的操作截斷應該更便宜,更穩定。

+1

非常感謝RussS!我有一個問題,如果我們使用truncate它會立即創建墓碑還是刪除數據? – Ankur

+7

立即。沒有墓碑。 – ashic

6

刪除表將刪除表和所有數據。截斷清除表中的所有數據,並默認創建數據的快照(但不是模式)。效率方面,他們很接近 - 雖然截斷會創建快照。您可以通過在cassandra yaml config中將auto_snapshot設置爲false來禁用此功能,但它在服務器範圍內。如果沒有太多的麻煩,我會放棄並重新創建表格 - 但如果您在重新創建之前不等待一段時間,我會看到問題。

+0

非常感謝Ashic!正如你所提到的,我們也面臨這個問題,即使在我們嘗試重新創建表後,即使在刪除表後,也不會讓我們在大約5分鐘左右的時間內完成此操作。 – Ankur

+0

我建議下降,因爲它是一天一天,我想你可能能夠承受拖延和創建之間的長時間延遲。如果不是,請執行截斷,但請記住清除快照,除非您禁用自動快照。 – ashic

+0

謝謝Ashic。我嘗試過使用truncate table,但即使在cql成功完成後,我也能夠在表格中看到記錄。然後我嘗試了下降表,正如你所提到的那樣,甚至在一小時後也沒有效果。我願意使用truncate,但它不會立即生效。 – Ankur