2016-04-08 4 views
2

Когда я делаю ремонт таблицы, я вижу много предупреждений, как следующее:Почему я вижу так много надгробных камней в Кассандре?

 
WARN [CompactionExecutor:112958] 2016-04-07 15:39:33,160 SliceQueryFilter.java:236 - Read 10002 live and 2857 tombstoned cells 

Но я ничего не удалять и не устанавливать значение TTL, так что ничего не было удалено. Почему так много надгробных камней? Размер данных составляет около 200 Гб, но я вставил некоторые ячейки с NULL.

+0

получить его по адресу http://docs.datastax.com/en/developer/java-driver/3.0/java-driver/reference/unsettingValues.html?scroll=unsetting-values – quemilk

ответ

3

Недавно у меня был same issue. И причина в том, что я вставлял значения NULL. Я просто не знал, что сделал.

Если вы используете подготовленный оператор и не задаете некоторые параметры, или вы устанавливаете их в NULL, или если вы вставляете объект JSON, который не содержит ключа для каждого столбца таблицы, то вы заканчиваете с надгробным камнем для каждой из этих колонок.

В случае подготовленного заявления вы можете избежать надгробия, явно устанавливая неиспользованные параметры как unset. См. CASSANDRA-7304.

К сожалению, такого синтаксиса/API для вставок JSON пока нет. Посмотрите на CASSANDRA-11424, чтобы проверить прогресс.