Операция слияния для создания отношения из большого файла CSV с тысячами строк замедляется в neo4j?

У меня есть файлы, содержащие тысячи строк, где размер файлов csv составляет от 500 МБ до 3,1 ГБ. Я сначала выполнил массовый импорт, потребовалось несколько минут, чтобы загрузить все данные в графическую базу данных. теперь для целей моего проекта мне нужно регулярно загружать данные. поэтому я написал сценарий python с использованием драйвера болта neo4j, в котором создаются все обычные узлы, выполняется обновление узла, выполняется удаление узла. Создание отношения из файлов также работает для данных небольшого размера (прототип). Проблема возникает, когда я собираюсь создать отношения из больших файлов. Хотя параллелизм работает, он работает очень медленно. мой процессор 32 ядра полностью загружен. Я проверил это через HTOP. а для партии 100-1000 правильно используется сердечник. Я пробовал размер партии 10000-100000, в этом случае параллелизм не работает. вот мой код запроса для создания загрузки CSV

"""CALL apoc.periodic.iterate('
load csv with headers from "file:///x.csv" AS row return row 
','
MERGE (p1:A {ID: row.A})
MERGE (p2:B {ID: row.B})
WITH p1, p2, row
CALL apoc.create.relationship(p1, row.RELATIONSHIP, {}, p2) YIELD rel  return rel
',{batchSize:10000, iterateList:true, parallel:true})"""

он отлично работает для небольшого количества данных. но он становится очень медленным, когда имеет дело с большими объемами данных. для создания 10 отношений потребовалось примерно 39 секунд. В моем случае операция слияния неэффективна или мне здесь не хватает некоторых хитростей. любезно помогите мне решить. Я работаю в экземпляре EC2, где размер RAM составляет 240G. Я пробовал разогревать. Запустите его, настроенный на 192G, но никаких существенных изменений не наблюдалось.


person Kalyan    schedule 06.08.2019    source источник
comment
Учитывая размер данных, над которыми вы работаете, вам не нужно использовать периодическую итерацию, если у вас столько оперативной памяти.   -  person Rajendra Kadam    schedule 06.08.2019
comment
Просто измените конфигурацию в файле конфигурации neo4j, чтобы использовать больше оперативной памяти   -  person Rajendra Kadam    schedule 06.08.2019
comment
39 секунд на 10 отношений - это слишком медленно. Есть ли у вас индексы: A (ID) и: B (ID)?   -  person InverseFalcon    schedule 06.08.2019
comment
Ознакомьтесь с моим ответом на загрузку больших файлов CSV: stackoverflow.com/a/56548843/6077914. И stackoverflow.com/a/54236141/6077914   -  person Rajendra Kadam    schedule 06.08.2019
comment
@InverseFalcon нет, я не создавал индекс для: A (ID) и: B (ID). Может ли кто-нибудь помочь мне, как установить индекс в этом коде для лучшего понимания. Я новичок в neo4j   -  person Kalyan    schedule 07.08.2019