2015-09-11 27 views
2

如果我的卡珊德拉DELETE操作始終使用ALL一致性水平,是安全的gc_grace_seconds財產減少到較低的值刪除?在我看來,ALL一致性級別意味着從不需要修復刪除操作,因此GC寬限期提供的安全性是不必要的。或者是否存在意味着GC寬限期仍然有用的特殊情況?使用低gc_grace_seconds當一致性級別的所有

+0

如果您的某個節點停機時間超過gc_grace_seconds或可能停止了hinted_handoff時間(默認3小時),會發生什麼情況?當該節點恢復時,我認爲你可能會遇到一些殭屍記錄。 – LHWizard

+0

@LHWizard *如何*有殭屍記錄?它們在所有節點上被刪除,因爲一致性級別是「ALL」。 – Raedwald

+0

當你做刪除時,將會創建墓碑。如你所知,他們留在SSTables直到gc_grace_seconds已經過去,然後他們可以在壓縮過程中被移除。例如,如果某個節點在壓縮過程中處於脫機狀態(網絡錯誤,OOM,無論什麼)?據我瞭解這個過程,它仍然會有墓碑,當它恢復在線時,它會[將這些墓碑複製到羣集的其他部分](https://academy.datastax.com/courses/ds201-cassandra-core-概念/壓實壓實和墓碑)。也許別人可以增加更多的清晰度。 – LHWizard

回答

2

永遠不要說永遠不會,但似乎有可能,你可以做到這一點。當某些節點停機或出現網絡擁塞時,您會犧牲能夠進行刪除的高可用性,因此在操作上它可能會令人頭疼,因爲節點不可避免地會出現停機。這種方法可能只適用於局域網上連接的非常小的羣集。

您可能需要考慮的一種情況是,如果操作員決定恢復表格的快照將會發生什麼情況。這可能會重新生成拍攝快照後您使用ALL刪除的某些數據。

您可能想要使用TTL覆蓋自己,這樣如果您錯過了刪除操作,數據最終會自行超時。

我有時候認爲C *應該有一個選項來刪除墓碑,如果所有的副本都刪除了刪除。無條件地保持他們十天似乎是過度殺傷。

相關問題