我刚开始使用Neo4j,并在neo4j中设置了一个测试图db,用于组织一些单击流数据,其中包含了我们日常使用的非常小的子集。这个图有大约2300万个节点和3400万个关系。这些查询似乎要花费很长时间才能运行,也就是说,即使在等待了30多分钟之后,我也没有看到响应返回。
数据组织为年->月->日->会话{1.n}->Event{1.n}
我在Windows7机器上运行数据库,将1.5GB的堆分配给Neo4j服务器
这些是新4j包装器中的配置。
wrapper.java.additional.1=-Dorg.neo4j.server.properties=conf/neo4j-server.properties
wrapper.java.additional.2=-Djava.util.logging.config.file=conf/logging.properties
wrapper.java.additional.3=-Dlog4j.configuration=file:conf/log4j.properties
wrapper.java.additional.6=-XX:+UseParNewGC
wrapper.java.additional.7=-XX:+UseConcMarkSweepGC
wrapper.java.additional.8=-Xloggc:data/log/neo4j-gc.log
wrapper.java.initmemory=1500
wrapper.java.maxmemory=1500这就是我的查询
START n=node(3)
MATCH (n)-[:HAS]->(s)
WITH distinct s
MATCH (s)-[:HAS]->(e) WHERE e.page_name = 'Login'
WITH s.session_id as session, e
MATCH (e)-[:FOLLOWEDBY*0..1]->(e1)
WITH count(session) as session_cnt, e.page_name as startPage, e1.page_name as nextPage
RETURN startPage, nextPage, session_cnt此外,我还设置了以下属性
node_auto_indexing=true
node_keys_indexable=name,page_name,geo_country
relationship_auto_indexing=true有人能帮我找出可能出了什么问题吗。
即使在运行部分查询时,也需要10-15分钟才能看到响应。
注意:我在Windows机器上没有其他应用程序正在运行
发布于 2022-07-16 22:56:04
为什么首先要返回所有节点?
如果您真的想这样做,请使用事务性http端点和curl来流响应:
我用一个包含100 k节点的数据库对它进行了测试。在电线上传输它们(1.5MB)需要0.9秒。如果使用“返回n”传输它们的所有属性,则需要1.4秒,结果是4.1MB传输。
如果您只想知道数据库中有多少节点。用这样的方法代替:
匹配(n)返回计数(*);
https://stackoverflow.com/questions/19307247
复制相似问题