Добавление отношений с помощью load csv в neo4j занимает много времени

Я загружаю отношения в мой граф DB в Neo4j, используя операцию загрузки CSV. Узлы уже созданы. У меня есть четыре различных типа отношений для создания из четырех различных файлов CSV (отношения файла 1 - 59, отношения файла 2 - 905, отношения файла 3 - 173 000, файл 4 - более 1 миллиона отношений). Запросы шифрования выполняются просто отлично, однако выполнение файла 1 (59 отношений) занимает 25 секунд, файла 2 - 6,98 минут, а файл 3 все еще продолжается с последних 2 часов. Я не уверен, являются ли эти времена выполнения нормальными, учитывая возможности neo4j для обработки миллионов отношений. Пример запроса на шифрование, который я использую, приведен ниже.

load csv with headers from
"file:/sample.csv"
as rels3
match (a:Index1 {Filename: rels3.Filename})
match (b:Index2 {Field_name: rels3.Field_name})
create (a)-[:relation1 {type: rels3.`relation1`}]->(b)
return a, b

"a" и "b" - это два индекса, которые я создал для двух предварительно загруженных категорий узлов в надежде ускорить поиск.

Дополнительная информация - Количество узлов (категория) - 1791 Количество узлов (категория b) - 3341

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

2 ответа

Создать индекс на Index1.Filename а также Index2.Field_name:

CREATE INDEX ON :Index1(Filename);
CREATE INDEX ON :Index2(Field_name);

Убедитесь, что эти индексы онлайн:

:schema

Убедитесь, что ваш запрос использует индексы, добавив PROFILE в начале вашего запроса и глядя на план выполнения, чтобы увидеть, используются ли индексы.

Больше информации здесь

Что мне нравится делать перед запуском запроса explain Сначала посмотрите, есть ли какие-либо предупреждения. Я исправил много запросов благодаря предупреждениям.
(просто предварительно добавить explain на ваш запрос)

Кроме того, возможно, вы можете отказаться от возврата. После того как ваш запрос завершится, вы можете запустить другой, чтобы просто увидеть узлы.

Я создаю примерно 20 миллионов отношений за 54 минуты, используя запрос, очень похожий на ваш.

Индексы важны, потому что именно так neo находит узлы.

Другие вопросы по тегам