【发布时间】:2014-01-30 09:14:11
【问题描述】:
我有一个包含 2.217.731 个节点和 3.127.475 个关系的数据库,其中节点是不同的设备,它们之间的关系类似于“CONNECTED_TO”、“IS_INSIDE”等。
我正在尝试遍历图形以查找特定节点。在 Cypher 中它看起来像
MATCH (n:Equipment)<-[IS_INSIDE*]-()<-[CONNECTED_TO*]-(m:Cable) where n.name = "name" RETURN m
使用 Java Core API,据我所知,这应该是查询 Neo4j 最快的方法,需要几秒钟,但它运行了几十分钟。
我正在使用 neo4j-2.0.0 和 java 版本“1.7.0_45”,最大 Java 堆大小 7 gigs
Neo4j 属性:
Map<String, String> config = new HashMap<>();
config.put( "neostore.nodestore.db.mapped_memory", "1800M" );
config.put( "neostore.relationshipstore.db.mapped_memory", "3G" );
config.put( "neostore.propertystore.db.mapped_memory", "100M" );
config.put( "neostore.propertystore.db.strings.mapped_memory", "150M" );
config.put( "neostore.propertystore.db.arrays.mapped_memory", "10M" );
inserter = BatchInserters.inserter("target/graphDb", config);
我是 Neo4j 的新手,不知道如何调整它以获得更好的性能。
【问题讨论】:
-
你能上传你的图表吗?
-
每个级别有多少个节点?例如,有多少个 IS_INSIDE 链接到 n.name?几根电缆?
标签: java performance neo4j