У меня есть большая модель графа, и мне нужно записать результат следующего запроса в csv.
Match (u:USER)-[r:PURCHASED]->(o:ORDER)-[h:HAS]->(i:ITEM) return u.id as userId,i.product_number as itemId
Когда я запрашиваю «Объяснение», я получаю следующий результат:
Это показывает, что расчетный результат составляет около 9 млн. Мои проблемы:
1) На получение ответа уходит много времени. Из neo4j-shell это занимает 38 минут! Это нормально? Кстати, у меня есть все индексы схемы, и все они ОНЛАЙН.
2) Когда я использую SpringDataNeo4j для получения результата, он выдает ошибку «java.lang.OutOfMemoryError: превышен предел накладных расходов GC», и это происходит, когда SDN пытается преобразовать загруженные данные в наш объект @QueryResult.
Я пробовал оптимизировать запрос разными способами, но ничего не изменилось! У меня такое впечатление, что я что-то делаю не так. Кто-нибудь знает, как я могу решить эту проблему? Следует ли мне использовать пакетное чтение / запись?
PS Я использую версию сообщества Neo4j версии: 3.0.1, и это мои sysinfos:
а это мои конфиги сервера.
dbms.jvm.additional=-Dunsupported.dbms.udc.source=tarball
use_memory_mapped_buffers=true
neostore.nodestore.db.mapped_memory=3G
neostore.relationshipstore.db.mapped_memory=4G
neostore.propertystore.db.mapped_memory=3G
neostore.propertystore.db.strings.mapped_memory=1000M
neostore.propertystore.db.index.keys.mapped_memory=500M
neostore.propertystore.db.index.mapped_memory=500M