Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么neo4j在这个密码查询上如此缓慢?_Neo4j_Cypher - Fatal编程技术网

为什么neo4j在这个密码查询上如此缓慢?

为什么neo4j在这个密码查询上如此缓慢?,neo4j,cypher,Neo4j,Cypher,我有一个相当深的树,它由一个初始“事务”节点(称为树的第0层)组成,从该节点到下一个节点(称为树的第1层)有50条边,然后从平均约35条边到第二层,依此类推 初始节点是一个:txnEvent,其余所有节点都是:mEvent mEvent节点有4个属性,其中一个称为channel\u name 现在,我想检索下到第4层的所有路径,以便这些路径包含一个channel\u name==a和channel\u name==B 此查询: match (n: txnEvent)-[r:TO*1..4]-&g

我有一个相当深的树,它由一个初始“事务”节点(称为树的第0层)组成,从该节点到下一个节点(称为树的第1层)有50条边,然后从平均约35条边到第二层,依此类推

初始节点是一个
:txnEvent
,其余所有节点都是
:mEvent

mEvent
节点有4个属性,其中一个称为
channel\u name

现在,我想检索下到第4层的所有路径,以便这些路径包含一个
channel\u name==a
channel\u name==B

此查询:

match (n: txnEvent)-[r:TO*1..4]->(m:mEvent) return COUNT(*);

告诉我,只有<>代码> 1667444 /代码>要考虑的路径。

但是,以下查询:

MATCH p = (n:txnEvent)-[:TO*1..4]->(m:mEvent)
    WHERE ANY(k IN nodes(p) WHERE k.channel_name='A')
    AND   ANY(k IN nodes(p) WHERE k.channel_name='B')       
    RETURN 
    EXTRACT (n in nodes(p) | n.channel_name),
    EXTRACT (n in nodes(p) | n.step),
    EXTRACT (n in nodes(p) | n.event_type),
    EXTRACT (n in nodes(p) | n.event_device),
    EXTRACT (r in relationships(p) | r.weight )
执行几乎需要1分钟(neo4j的UI位于端口7474上)

对于完整性,neo4j告诉我:

"Started streaming 125517 records after 2 ms and completed after 50789 ms, displaying first 1000 rows."
所以我想知道我是否有明显的遗漏。顺便说一下,节点具有的所有属性都已编制索引。是查询速度慢,还是速度快而流媒体速度慢

UDATE: 此查询不返回数据流:

MATCH p = (n:txnEvent)-[:TO*1..4]->(m:mEvent)
        WHERE ANY(k IN nodes(p) WHERE k.channel_name='A')
        AND   ANY(k IN nodes(p) WHERE k.channel_name='B')       
        RETURN 
        COUNT(*)
需要35秒,所以即使速度更快,大概是因为没有返回数据,我觉得还是相当慢

更新2:


理想情况下,这些数据应该放在带有python内核的jupyter笔记本中。

感谢您的配置文件计划

请记住,您请求的查询很难处理。由于您希望路径中至少有一个节点具有一个属性,而路径中至少有一个其他节点具有另一个属性,因此无法在扩展期间修剪路径。相反,必须确定每一条可能的路径,然后必须访问160万条路径中的每一条路径中的每一个节点,以检查属性(对于每一条路径,这两个属性都必须执行两次)。因此,滤波器操作的命中率约为1000万db

您可以尝试扩展堆和页面缓存大小(如果您有空闲的RAM),但我看不到任何简单的方法来调优此查询


至于您关于查询时间与流媒体的问题,问题在于查询本身。您看到的消息意味着第一个结果被非常快地找到,因此第一个结果几乎立即就在流中准备好了。结果在找到时会添加到流中,但需要匹配和筛选的路径数量在扩展期间无法修剪路径,这意味着查询需要很长时间才能完成。

在扩展计划的所有元素后,您可以截取查询的配置文件计划吗?完成!请看我的编辑,谢谢。