Добавление отношений с помощью 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 находит узлы.