Более быстрый способ очистить семейство столбцов в rocksdb - PullRequest
0 голосов
/ 30 января 2019

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

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

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

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

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

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

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

...