Я пытаюсь импортировать набор данных среднего порядка около 500 000 узлов в neo4j с использованием cypher. Я запускаю neo4j-community-2.0.0-M05 локально на моем i7ac i7ac i7ac с тактовой частотой 3,4 ГГц с SSD.neo4j импорт замедление
Я соединяю cypher с оболочкой neo4j, обертывая каждые 40k строк в транзакцию.
Я использую метки, и до того, как я начал, я создал индексы по одному свойству на каждый помеченный узел.
Когда я ушел прошлой ночью, MATCH CREATE UNIQUE занимал около 15 м. Каждый. Этим утром они занимают около 6000 м.
медленные запросы выглядит примерно так
MATCH n:Artifact WHERE n.pathId = 'ZZZ' CREATE UNIQUE n-[r:DEPENDS_ON]->(a:Artifact {pathId: 'YYY'}) RETURN a
1 row
5719 ms
pathId индексируется.
Я понимаю, что это важная сборка и, вероятно, не оптимизированная производительность. Но я не менее трети своего импорта, и это замедляется все больше и больше.
Должен ли я посмотреть на другие методы, кроме cypher, для импорта этих данных?
Вы пытались использовать batchinserter с параметрами, см. Https://github.com/jexp/batch-import? Я думаю, что сопоставление шаблонов может быть не оптимизировано. Было бы здорово получить доступ к вашей настройке для профилирования. –