Сканирование надгробий в system.log - PullRequest
0 голосов
/ 28 мая 2019

У меня кластер кассандры с меньшим количеством вариантов использования. Я обнаружил в своем файле system.log " Чтение 10 живых и 5645464 ячеек надгробий в keyspace.table " Что это значит? пожалуйста, помогите понять.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Для Кассандры вся записанная информация является неизменной.Это означает, что когда у вас есть операция удаления (явная с помощью оператора delete или с предложением Time To Live [TTL]), база данных добавит еще одну запись со специальным флагом с именем tombstone.Все эти записи будут храниться в базе данных до тех пор, пока не пройдет период gc_grace_seconds;по умолчанию это 10 дней.

В вашем случае движок обнаружил, что большинство извлеченных записей были удалены, но они все еще ждут прохождения gc_grace_seconds, чтобы уплотнение освободило пространство.Один из возможных вариантов решения проблемы - уменьшить gc_grace_seconds для этой таблицы.

Для получения дополнительной информации, пожалуйста, обратитесь к этой статье от Last Pickle.

1 голос
/ 29 мая 2019

Еще одна важная вещь, которую следует иметь в виду при работе с Cassandra, - это то, что ячейки надгробий напрямую не связаны с удалениями.

Когда вы вставляете значение null в атрибут при выполнении вставки, Кассандра внутренне помечает этот атрибут / ячейку как надгробный камень.Таким образом, даже если у вас не так много удалений, вы можете получить огромное количество надгробий.Простое и простое решение - не вставлять null значения для атрибута при вставке.

В соответствии с этим утверждением Read 10 live and 5645464 tombstones cells in keyspace.table может произойти сканирование таблицы для запроса, который сканирует 10 ячееки 5645464 количество надгробий (ячеек со значением null), при этом я догадываюсь.Нужно понимать, какие типы запросов выполняются, чтобы лучше понять это.

...