что на самом деле делает сборщик мусора - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь освободить место на диске в C*.
Я удалил много строк, которые создали много надгробий.
Я запускаю утилиту для сбора мусора с помощью nodetool, и мне было интересно, что делает этот инструмент сценарии Я читал, что он удаляет фактические данные, которые надгробие скрывает, но не надгробия (которые будут очищены после gc_grace_seconds). Это точно? инструмент для сбора мусора не имеет никакой связи с параметром gc_grace_seconds? Как сборщик мусора освобождает место на диске?

Есть не так много документации о том, как этот инструмент работает и что он делает.

любая помощь будет высоко ценится

1 Ответ

1 голос
/ 19 февраля 2020

Удаление данных в Cassandra всегда добавляет больше данных, поэтому вам нужно быть осторожным с этим.

nodetool garbagecollect выполняет одностадийное сжатие для удаления перезаписанных или логически удаленных данных. Для каждого sstable он создаст новый sstable с очищенными ненужными данными. По умолчанию сборщик мусора удаляет строки или разделы, которые были удалены или обновлены с использованием более новых данных. Он также может удалять удаленные или обновленные значения ячеек, если указан параметр -g CELL, но для этого потребуются дополнительные ресурсы (ЦП ввода-вывода). Эта команда может также удалить надгробия с истекшим сроком хранения (старше gc_grace_seconds), но не самые простые sh. Кроме того, существуют и другие ограничения на удаление надгробий.

Если надгробия с истекшим сроком годности все еще существуют, то единственное серьезное уплотнение может помочь их выселить, например, запустив nodetool compact -s на отдельных таблицах, но вам нужно убедиться, что у вас достаточно места - того же размера, что и сама таблица.

...