#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
если у вас есть ошибки страницы в вашем запросе.