Neo4j:Cypher性能测试/基准测试

Neo4j:Cypher性能测试/基准测试,neo4j,cypher,Neo4j,Cypher,我创建了一个Neo4j 3数据库,其中包括一些测试数据和一个小应用程序,该应用程序将向Neo4j发送http密码请求。这些请求总是同时发生的。实际上,它是一个查询模板,只是在某些属性上有所不同。我对这些陈述的表现感兴趣。 我知道我可以使用配置文件在浏览器中获取一些信息。但是我想执行一组语句,例如。G10个示例查询,多次并计算平均性能。有没有一个简单的方法或工具来做到这一点,或者我必须写e。G收集这些值的Python脚本?它不一定是一个大型应用程序,我只想看看一些通用的性能指标。我认为还没有现成的

我创建了一个Neo4j 3数据库,其中包括一些测试数据和一个小应用程序,该应用程序将向Neo4j发送http密码请求。这些请求总是同时发生的。实际上,它是一个查询模板,只是在某些属性上有所不同。我对这些陈述的表现感兴趣。
我知道我可以使用
配置文件
在浏览器中获取一些信息。但是我想执行一组语句,例如。G10个示例查询,多次并计算平均性能。有没有一个简单的方法或工具来做到这一点,或者我必须写e。G收集这些值的Python脚本?它不一定是一个大型应用程序,我只想看看一些通用的性能指标。

我认为还没有现成的工具来对Neo4j进行基准测试。因此,您最好的选择是实施您自己的解决方案,但如果您想要获得(在某种程度上)具有代表性的结果,您必须小心:

  • 检查一下

  • 给Neo4j JVM足够的时间预热。这意味着您需要对查询运行预热阶段,并放弃它们的执行时间

  • 除了使用客户机-服务器体系结构,您还可以选择在嵌入式模式下使用Neo4j,这将使您更好地了解查询性能(无需驱动程序和序列化/反序列化过程的开销)。然而,在这种情况下,您必须在JVM上实现基准测试(使用Java或Jython)

  • 多次运行每个查询不要使用平均值,因为它对异常值更为敏感(由于多种原因,您可能会获得较高的值,例如,如果操作系统计划程序在特定查询执行期间在后台启动某些作业)

    本主题中的一篇好论文认为,应该使用几何平均数

    在计算机科学论文的性能实验中,使用中值也是常见的做法。我倾向于使用此选项-例如,此图显示内存RDF引擎(Jena和Sesame)上两个简单SPARQL查询的第一次执行时间和5次连续执行的中值

  • 但是请注意,Neo4j采用了各种缓存机制,因此如果只多次运行同一查询,它只需要在第一次执行时计算结果,后续执行将使用缓存,除非在查询执行之间更新数据库

  • 作为一个很好的近似,您可以设计基准以尽可能接近您的实际工作负载-在许多情况下。因此,如果应用程序只对每个查询进行一次评估,那么只对第一次评估进行基准测试是完全可以接受的

  • 本主题的另一个好读物是-第1章讨论了特定领域基准测试的最重要标准(相关性、可移植性、可伸缩性和简单性)。这些可能不是您的基准测试所必需的,但是现在可以使用它们了


  • 我参与了一个跨技术基准测试,考虑了关系数据库、图形数据库和语义数据库,包括Neo4j。您可能会在存储库中找到一些有用的想法或代码片段:

    我认为还没有现成的工具来对Neo4j进行基准测试。因此,您最好的选择是实施您自己的解决方案,但如果您想要获得(在某种程度上)具有代表性的结果,您必须小心:

  • 检查一下

  • 给Neo4j JVM足够的时间预热。这意味着您需要对查询运行预热阶段,并放弃它们的执行时间

  • 除了使用客户机-服务器体系结构,您还可以选择在嵌入式模式下使用Neo4j,这将使您更好地了解查询性能(无需驱动程序和序列化/反序列化过程的开销)。然而,在这种情况下,您必须在JVM上实现基准测试(使用Java或Jython)

  • 多次运行每个查询不要使用平均值,因为它对异常值更为敏感(由于多种原因,您可能会获得较高的值,例如,如果操作系统计划程序在特定查询执行期间在后台启动某些作业)

    本主题中的一篇好论文认为,应该使用几何平均数

    在计算机科学论文的性能实验中,使用中值也是常见的做法。我倾向于使用此选项-例如,此图显示内存RDF引擎(Jena和Sesame)上两个简单SPARQL查询的第一次执行时间和5次连续执行的中值

  • 但是请注意,Neo4j采用了各种缓存机制,因此如果只多次运行同一查询,它只需要在第一次执行时计算结果,后续执行将使用缓存,除非在查询执行之间更新数据库

  • 作为一个很好的近似,您可以设计基准以尽可能接近您的实际工作负载-在许多情况下。因此,如果应用程序只对每个查询进行一次评估,那么只对第一次评估进行基准测试是完全可以接受的

  • 本主题的另一个好读物是-第1章讨论了特定领域基准测试的最重要标准(相关性、可移植性、可伸缩性和简单性)。这些可能不是您的基准测试所必需的,但是现在可以使用它们了


  • 我参与了一个跨技术基准测试,考虑了关系数据库、图形数据库和语义数据库,包括Neo4j。您可能会在存储库中找到一些有用的想法或代码片段:

    非常感谢您的输入。这很有帮助。我希望我的配置具有Neo4j性能。那么,使用相同的环境如何呢。E通过螺栓驱动器等进入,loo