2014-10-28 120 views
7

我知道及早清除墓碑是危險的,因爲它可能會導致刪除的數據被複活,但是如果所有複製品都確認刪除,那麼此類刪除應該是安全的。例如,如果一個表的複製因子爲3,並且包含該關鍵字的所有3個節點都已確認它們具有適當的邏輯刪除,那麼執行刪除邏輯刪除的壓縮應該是安全的,因爲不會存在數據的延續副本。有沒有什麼辦法讓Cassandra在* gc_grace_seconds過去之前安全地移除墓碑?

卡桑德拉是否可以安全移除墓碑?

我寧願將gc_grace_seconds設置爲無窮大,並依靠這種類型的墓碑安全壓實,而不用擔心nodetool repairgc_grace_seconds的時間安排。

回答

2

不,不可能在不更改gc_grace_seconds的情況下刪除墓碑。

有一些操作,其中所有3個副本可能會抄襲墓碑,將其刪除,之後再需要它。考慮您需要將早期的SSTable重新傳輸回羣集的情況。

這種類型的手動墓碑清除將明顯更糟的性能明智,因爲你只會定期而不是不斷地做。您將不必要地讀取額外的數據,並不斷壓縮應刪除的墓碑。

我的建議是將您的gc_grace_seconds設置爲合理的(10天很好),並使用opscenter或cassandra-reaper安排修理時間。

相關問題