Более быстрый способ очистить семейство столбцов в rocksdb

Я ищу способы быстрее очистить данные семейства столбцов в rocksdb без значительных накладных расходов (включая уплотнение). Мне нужно очистить семейство столбцов как один раз для каждых 5К строк (которые вставляются с помощью ряда вызовов write_batch()). Мне нужно эвакуировать данные из семейства столбцов несколько тысяч раз менее чем за 10 минут.

Первоначальный подход заключался в создании и отбрасывании CF, когда данные должны быть очищены. Но это было дорого, поэтому я оценил несколько других комбинаций и упомянул их минусы,

1) Flush + запуск ручного уплотнения / автоматического уплотнения через пользовательские свойства с настраиваемым фильтром уплотнения - Flush должен создать SST, а затем уплотнить через фильтр уплотнения. Это включает в себя ненужное создание файла и накладные расходы, потому что сжатие должно прочитать файл снова.

2) Очистить + удалить файлы в диапазоне - не удаляет файлы в L0. Количество строк составляет около 5 КБ, очистка или даже сжатие не пересекают L0.

3) создание пакета удаления - создает надгробия, для удаления которых требуется уплотнение.

4) Отбрасывание и создание семейства столбцов - Слишком много над головой. 10 тыс. Вызовов для удаления и создания семейства столбцов занимает около 3-5 секунд, что недопустимо.

Поскольку данные не нужны, я больше склоняюсь к усечению или даже принудительному переключению памяти, за которым следует удаление неизменяемых. Я не хочу выдвигать это как фоновое задание, что-то вроде switch memtable, мне достаточно вызова типа DestroyImmutableMemtables(). Я хотел бы ваши предложения в этом:)

0 ответов

Другие вопросы по тегам