Как удаляются надгробия Кассандры в старых SSTables?
Если у меня включено сжатие, как SizeTieredCompaction
мой SSTables
уплотняются, пока не будет достигнут определенный уровень размера. Когда я "удаляю" старую запись, которая находится в SSTable
довольно старый раздел, который не будет снова уплотнен в ближайшем будущем, когда происходит удаление?
Представьте, что вы удалили 100 записей, и все они являются частью действительно старого SSTable, который несколько раз сжимался, не имел горячих данных и уже достаточно большой. Понадобится целая вечность, пока он снова не будет уплотнен, а надгробия удалены.
1 ответ
Когда надгробная плита объединена с данными в уплотнении, данные будут удалены с диска. Когда это произойдет, зависит от скорости добавления новых данных и вашей стратегии уплотнения. Надгробия не очищаются до окончания gc_grace_seconds, чтобы предотвратить восстановление данных (убедитесь, что ремонт завершен в течение этого периода времени).
Если вы перезаписываете или удаляете данные часто и не в порядке с большим количеством устаревших данных на диске, вам, вероятно, следует использовать LeveledCompactionStrategy
вместо этого (я бы порекомендовал всегда по умолчанию LCS при использовании ssds). Самые большие sstables могут долго уплотняться при использовании STCS. STCS больше для постоянного добавления данных (таких как журналы или события). Если срок действия записей истекает, и вы в значительной степени полагаетесь на TTL, вы, вероятно, захотите использовать стратегию временного окна.