Как быстро разогреть кэш страниц Neo4J для набора узлов и взаимосвязей

#neo4j #cypher #neo4j-apoc

#neo4j #cypher #neo4j-apoc

Вопрос:

Я настраиваю REST API, поддерживаемый экземпляром Neo4J со сложными данными размером хранилища около 400 ГБ, и мне нужно разогреть кэш страницы для набора узлов и взаимосвязей.

Существуют специальные вызовы для набора входных данных, для запроса и получения ответа на которые требуется много времени. Итак, я хочу способ разогревать кэш только для узлов и взаимосвязей, к которым обращаются для этих вызовов. Я попытался использовать APOC.warmup.run (true, истина) (заняло около 15 минут, что для меня приемлемо), но это загружает все хранилище в память, чего я не могу сделать, поскольку у меня есть ограничение на память.Я попытался написать простой Cypher, который проходит по этим путям, но для его выполнения требуется много времени, и когда я проверяю рост объема памяти экземпляра Neo4J, который очень медленный по сравнению с прогревом APOC.

Я также думаю, есть ли способ расширить / настроить APOC warmup для загрузки только определенных частей хранилища, но хочу посмотреть, есть ли люди, которые уже пробовали что-то подобное раньше.

Я ожидаю быстрого способа прогрева определенной части хранилища, а не всего хранилища.

Ответ №1:

У вас также должно быть настроено достаточно кэша страниц для этого (400G)

При использовании apoc.warmup.run(true,true,true) также будут разогреты индексы схемы.

Я думаю, у вас это заняло всего 15 минут, потому что производительность чтения с диска может быть ниже? И сколько у вас процессоров?

Вы не можете реально загрузить определенную часть хранилища.

Но последние версии Neo4j отслеживают использование кэша страниц и восстанавливают его после перезапуска. Таким образом, вы можете просто запускать свои запросы, и после перезапуска те же страницы будут в кэше страниц.

Вы также увидите с помощью, PROFILE если у вас есть ошибки страницы в вашем запросе.