Grails поиск плагина переиндексации производительности настройки
Мне нужно регулярно переиндексировать все экземпляры моего домена из действующей унаследованной базы данных. Где ~400 тыс. Перекодировщиков в БД Чтение объекта домена по одному из БД без реиндекса, получая ~15 минут
Итерации с reindex получают 8-10 часов с индексом в remdisk:
ids.each { id ->
Domain.reindex(id)
}
Я не могу использовать Domain.reindex() из-за тайм-аута соединения с БД
searchableService.reindexAll(список) займет около 2 часов. Но этот метод не рекомендуется
Индекс обновляется одним потоком. Размер результирующего индекса на диске ~0.5 Гб
Как я могу улучшить представление на Lucena? Как я понимаю, переиндексация моей информации должна занять около часа.
1 ответ
Согласно /questions/8774754/indeks-s-vozmozhnostyu-poiska-blokiruetsya-pri-obnovlenii-vruchnuyu-lockobtainfailedexception/8774766#8774766 хорошими настройками являются:
compassSettings = [
'compass.engine.optimizer.schedule.period': '300',
'compass.engine.mergeFactor':'1000',
'compass.engine.maxBufferedDocs':'1000',
'compass.engine.ramBufferSize': '128',
'compass.engine.useCompoundFile': 'false',
'compass.transaction.processor': 'read_committed',
'compass.transaction.processor.read_committed.concurrentOperations': 'false',
'compass.transaction.lockTimeout': '30',
'compass.transaction.lockPollInterval': '500',
'compass.transaction.readCommitted.translog.connection': 'ram://'
]