1 RT vs. Distributed n-RT

Здравствуйте!

Имею RT-индекс на 16 млн. документов. Всё работало прилично, но захотелось кое-что попробовать: очистил этот индекс, создал 3 идентичных и объединил их в distributed (local). Заинсертил соответственно по 4 млн. доков в каждый.

Особой разницы по производительности не заметил.
Существует ли хотя бы теоретически польза от подобного решения?

RT индекс внутри устроен очень похоже на distributed. Только в последнем случае вы сами создаёте индексы-элементы и объединяете в один. А rt делает это автоматически - при вставке до определённого лимита накапливает данные в оперативке, а затем сохраняет накопленное как самый обычный дисковый индекс. Затем накапливается и сохраняется следующий, и т.д.
Лимит задаётся через rt_mem_limit.
Поиск по дисковому индексу всегда однопоточный.
Поиск по составному (неважно, rt или distributed) может распараллеливаться в зависимости от количества частей (очевидно, если там единственный элемент - так и останется один поток. Если больше - то уже появляются варианты распараллеливания).
Если у вас, условно, в исходном индексе было 4 дисковых чанка, а потом вы вручную поделили на 4 и получилось 4 индекса по 1 чанку - ну, вы просто повторили структуру оригинального rt-индекса. Какая-то разница в производительности возможна, но скорее всего непрогнозируемая и несущественная.

2 Likes

Спасибо! Всё понятно.