我想了解在Cassandra中刪除後如何快速回收空間。我發現了很多描述墓碑的文章,以及當您進行範圍查詢時可能產生的問題,Cassandra必須掃描大量墓碑行才能找到更稀缺的活動文章。而且我知道你不能將gc_grace_seconds設置得太低,否則你將有殭屍記錄,如果一個節點脫機並在墓碑從其餘機器上消失後又回來了,殭屍記錄就會彈出。這一切都有道理。cassandra斑點,墓碑和空間回收
但是,如果墓碑放置在鍵那麼它應該有可能回收其餘行數據的空間。
所以我的問題是,此表:
create table somedata (
category text,
id timeuuid,
data blob,
primary key ((category), id)
);
如果我插入,然後刪除該表中的一些記錄,並注意不要碰到上述墓碑+範圍問題最後在其他地方,這些斑點的空間何時會被回收?
在我的情況下,斑點可能會大於推薦的大小(1mb我相信),但它們不應該大於〜15mb,我認爲它仍然可行。但是,如果所有這些blob粘貼10天(默認值爲gc_grace_seconds),並且只有這些密鑰粘貼10天才會產生巨大的空間差異。
當我看着我無法在任何地方找到這個特定的方面。
gotcha。如果有重寫,那麼呢? (覆蓋blob值/列)在這種情況下是否有可能發生比gc_grace_seconds更早的壓縮將導致舊的blob被完全丟棄,因爲它現在已經被新的替換掉了? –
不,不存在覆蓋,因爲記錄是不可變的,如果有更新的信息,Cassandra將創建一個帶有不同時間戳的新記錄,具有最新時間戳的記錄被視爲當前記錄,原始記錄將停留在gc_grace_seconds子句 –
上定義的時間,謝謝 - 清除它。所以我猜想關鍵是要弄清gc_grace_seconds的值,這個值在你想要保留的時間之間保持一段距離,以正確處理離線的節點,然後再回來;以及將佔用多少額外的磁盤空間。 –