#neo4j
#neo4j
Вопрос:
Я использую neo4j community edition. Я хочу запустить запрос, который проверяет 40 миллионов узлов и при необходимости обновляет их конкретное свойство. Но запрос завершается ошибкой с этим сообщением:
Ошибка запроса: {код: Neo.Ошибка TransientError.Общая информация.OutOfMemoryError} {сообщение: недостаточно памяти для выполнения текущей задачи. Пожалуйста, попробуйте увеличить ‘dbms.memory.heap.max_size’ в конфигурации neo4j (обычно в ‘conf / neo4j.conf’ или, если вы используете Neo4j Desktop, найти через пользовательский интерфейс) или, если вы используете встроенную установку, увеличьте кучу с помощью команды ‘-Xmx’отметьте строку, а затем перезапустите базу данных. }
Итак, я увеличивал dbms.memory.heap.max_size
и dbms.memory.heap.initial_size
снова и снова, одинаковое значение для обоих. Несмотря на увеличение их до 8192g, эта проблема возникает снова. Должен ли я увеличить его больше? или это связано с ограничением памяти в версии сообщества? предварительно благодарим вас за любое решение! 🙂
Ответ №1:
В этом случае необходимо пакетировать узлы, а затем выполнять запрос для каждого пакета. Это возможно с помощью плагина apoc
и вызывающей процедуры apoc.periodic.iterate
, например:
call apoc.periodic.iterate('statement returning items', 'statement per item', {batchSize:100000, batchMode:"BATCH"}
Более подробная информация описана здесь