相同的Cypher Query在不同的DB上具有不同的性能

时间:2015-03-28 19:38:25

标签: neo4j cypher

我有一个包含所有国家/地区的fullDB(按国家/地区聚类的图表),我有各种单个国家/地区的测试数据库,这些数据库包含完全相同的模式但仅适用于一个给定的国家/地区。

我的查询"开始"节点,通过匹配属性的给定值来识别,例如

match (country:Country{name:"UK"})

然后进入变量country定义的主查询。所以我期望查询时间是相似的,因为我们从相同的已知节点开始,并且它将在两个DB中遍历与其相关的相同数量的节点。

但是如果我在完整数据库中运行它或者只是在一个国家/地区运行它,我的查询性能会有很大差异。

我立刻想到我必须要有某种"笛卡尔关系"问题继续进行,因此我在完整数据库和单个国家/地区数据库中分析了查询,但该计划中的每个步骤的配置文件完全相同。我假设该配置文件会显示计划中某个点的db命中数显着增加,但值是相同的。我错误地显示了什么配置文件?

一些尺码: fullDB将有70k节点,测试DB 672节点,查询完成的完整db的时间是218764ms,而测试db大约是3407ms。

写这篇文章的时候,我意识到某些节点(供应商可以供应不同国家)的传出关系数量会增加,我认为这可能是原因,但问题仍然是为什么我没有看到任何在分析中表明了这一点。

欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本? 对于数据集大小,两个查询时间都太长了。

所以你可能会检查你的配置/磁盘。

您是否为:Country(name)创建了索引/约束并且该索引是否在线?

请分享您的查询和查询计划。