TWCS не генерирует SStables согласно window_size и window_unit - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно сгенерировать SSTables через определенное время, например 10 минут, но, используя TWCS и настройку «compaction_window_size» и «compaction_window_unit», я не могу понять, когда будут генерироваться SSTable.

Я перепробовал все многие комбинации, но я не могу понять, когда будут созданы таблицы SST

CREATE TABLE twcs.twcs2 (
    id int PRIMARY KEY,
    age int,
    name text
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy', 'compaction_window_size': '1', 'compaction_window_unit': 'MINUTES', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 3600
    AND gc_grace_seconds = 60
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

Здесь я установил 'compaction_window_unit' = 'MINUTES' и 'compaction_window_size ':' 1 ', поэтому в соответствии с этим SSTables должны генерироваться через каждую 1 минуту, если с таблицей выполняется какая-либо операция (вставка / удаление / обновление данных), но этого не происходит.

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

TWCS - это стратегия уплотнения. Стратегии сжатия не имеют ничего общего с генерируемыми sstables. Это «алгоритм» согласования и очистки, как только они созданы. Способ работы TWCS заключается в том, что sstables будут объединены в окна. Ключевое слово здесь «консолидировано». Нет гарантии, что sstables будут «сгенерированы» в этот период времени, но все, что генерируется, после истечения времени окна, будет объединено. Так что, если у вас есть, скажем, почасовые окна / корзины, в течение этого часа sstables может генерироваться или не генерироваться. Если во время окна создается несколько sstables, они уплотняются / консолидируются / сверяются с использованием STCS (sstables одинакового размера объединяются). По истечении часа любые sstables, которые остаются для этого окна, будут сжаты вместе в один sstable. Со временем вы увидите один sstable на окно (или ни одного, если ничего не было сгенерировано в этом окне). После прохождения TTL и gc_grace все окна просто удаляются (вместо больших усилий по слиянию с другими, а затем по удалению просроченных записей).

TWCS работает очень хорошо, если в окнах нет перекрытия строк. Если есть перекрытие, то самый старый оконный sstable не сможет быть удален, пока не истечет срок действия самого нового sstable с перекрывающимися записями. Другими словами, TWCS хорошо работает для вставок, которые не пересекают окна (помните, что обновления и удаления также считаются вставками). Вы должны быть уверены, что используете TTL для очистки (т.е. не запускайте операторы удаления, так как это приведет к перекрытию). Кроме того, из того, что я обнаружил при использовании этого, убедитесь, что отключили восстановление для таблиц с TWCS, поскольку это может вызвать большие проблемы (невидимое перекрытие).

Таким образом, короче говоря, TWCS не вызывает получение sstablesсгенерированный (существуют правила для создания sstables, которые не имеют ничего общего со стратегиями уплотнения), это просто еще один метод поддержания чистоты.

Надеюсь, что это поможет.

0 голосов
/ 03 октября 2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...