Performance 如何在没有缓存的情况下比较neo4j查询的性能?

Performance 如何在没有缓存的情况下比较neo4j查询的性能?,performance,caching,indexing,neo4j,Performance,Caching,Indexing,Neo4j,我一直在尝试比较neo4j中查询的性能 为了提高查询的效率,我添加了索引,使用profile分析了结果,并在使用索引时尝试了同样的操作 在大多数查询中,使用第二个选项(使用索引)时DB命中率要高得多,行数相同或更少,但时间性能似乎不可靠:在一些查询中,添加使用索引的速度较慢,但通过重新执行查询,性能参数(DB命中率和行数)和时间更好 为了停止缓存的干扰,转到属性文件,将neo4j.properties中的cache_类型更改为none并重新启动neo,但似乎每次都会更快地得到相同查询的结果(直到

我一直在尝试比较neo4j中查询的性能

为了提高查询的效率,我添加了索引,使用profile分析了结果,并在使用索引时尝试了同样的操作

在大多数查询中,使用第二个选项(使用索引)时DB命中率要高得多,行数相同或更少,但时间性能似乎不可靠:在一些查询中,添加使用索引的速度较慢,但通过重新执行查询,性能参数(DB命中率和行数)和时间更好

为了停止缓存的干扰,转到属性文件,将neo4j.properties中的cache_类型更改为none并重新启动neo,但似乎每次都会更快地得到相同查询的结果(直到某一点)

测试它的最佳方法是什么?

Neo4j具有(高达2.2.x)a。使用
cache\u type=node
只切换对象缓存。要禁用页面缓存,可以使用dbms.pagecache.memory=0。然而,如果所有缓存都被禁用,您基本上可以测量IO子系统的速度,因为每个查询都会进入裸机并从光盘读取数据

我推荐一种不同的方法:启用两个缓存并多次运行要比较的查询以预热缓存。对热缓存进行测量,因为这更接近实际生产场景


另请注意:在Neo4j 2.3中,对象缓存将消失,我们只有页面缓存。

嗨,Stefan,谢谢你的回答!尝试按照建议执行操作,将缓存类型从“无”更改为“软”。在这两种情况下(使用&w/o USING INDEX提示),查询起初似乎运行得越来越快,但过了一段时间,它们开始变得越来越慢。据我从文档中了解,db命中率较低的查询应该更快,但由于时间不一致,如何对其进行测试?我是否应该选择db命中率较低的(带有USING INDEX提示的),尽管它并不总是更快?从3.5开始,pagecache size属性已更改为
dbms.memory.pagecache.size