Как удаляются надгробия Кассандры в старых SSTables?

Если у меня включено сжатие, как SizeTieredCompactionмой SSTables уплотняются, пока не будет достигнут определенный уровень размера. Когда я "удаляю" старую запись, которая находится в SSTable довольно старый раздел, который не будет снова уплотнен в ближайшем будущем, когда происходит удаление?

Представьте, что вы удалили 100 записей, и все они являются частью действительно старого SSTable, который несколько раз сжимался, не имел горячих данных и уже достаточно большой. Понадобится целая вечность, пока он снова не будет уплотнен, а надгробия удалены.

1 ответ

Решение

Когда надгробная плита объединена с данными в уплотнении, данные будут удалены с диска. Когда это произойдет, зависит от скорости добавления новых данных и вашей стратегии уплотнения. Надгробия не очищаются до окончания gc_grace_seconds, чтобы предотвратить восстановление данных (убедитесь, что ремонт завершен в течение этого периода времени).

Если вы перезаписываете или удаляете данные часто и не в порядке с большим количеством устаревших данных на диске, вам, вероятно, следует использовать LeveledCompactionStrategy вместо этого (я бы порекомендовал всегда по умолчанию LCS при использовании ssds). Самые большие sstables могут долго уплотняться при использовании STCS. STCS больше для постоянного добавления данных (таких как журналы или события). Если срок действия записей истекает, и вы в значительной степени полагаетесь на TTL, вы, вероятно, захотите использовать стратегию временного окна.

Другие вопросы по тегам