Кажется я догадываюсь: т.к. это LSM, то что происходит: - в первый раз пробегаем 1000 таплов и удаляем их. - это вставляет 1000 "надгорбий" (tombstones) - второй раз пробегаем 1000 надгробий + 1000 живых таплов. Вставляем ещё 1000 надгробий. - втретий раз пробегаем 2000 надгробий + 1000 живых таплов...
В общем O(N^2)
А потом запускается компакшен (потому что количество надгробий+ количество живых таплов превысило run_size) и кладём перф)
Компакшен перезаписывает все данные, поэтому время его выполнения будет зависеть только от размера данных, соответственно чем чаще его запускаете тем больше страдаете по времени
vinyl_range_size фактически влияет на частоту запуска компакшена
Я считаю, vinyl_range_size нужно делать поменьше, чтобы накапливалось поменьше tombstone. Возможно даже, единицы мегабайт. Но я не знаю, как тарантул в таком режиме работать будет.
Итератор по умолчанию так будет бежать? или как это мне сделать? Что-то я растерялся?
Запоминай последний таймстэмп в цикле по индексу, и в следующий раз начинай итерироваться с него. Изредка начинай итерацию с начала на случай, если кто ttl в прошлое поставил.
Я считаю, vinyl_range_size нужно делать поменьше, чтобы накапливалось поменьше tombstone. Возможно даже, единицы мегабайт. Но я не знаю, как тарантул в таком режиме работать будет.
Будет зависеть от vinyl_run_count_per_level и vinyl_run_size_ratio, причём больше от последнего