我一直在尝试比较neo4j中的查询效果。
为了提高查询效率,我添加了索引,使用配置文件分析了结果,并在使用USING INDEX时尝试了相同的操作。
在大多数查询中,DB Hits使用第二个选项(使用USING INDEX)要好得多,行数相同或更少,但时间性能似乎不可靠:在几个查询中添加USING INDEX虽然较慢但是通过重新执行查询,性能参数(db hits& rows)和时间变得更好。
为了阻止缓存的干扰,转到属性文件,将neo4j.properties中的cache_type更改为none并重新启动neo,但看起来每个查询的结果似乎相同时间(直到某一点)。
测试它的最佳方法是什么?
答案 0 :(得分:2)
Neo4j有(最多2.2.x)two layered cache architecture。使用cache_type=node
,您只需切换对象缓存。要禁用页面缓存,您可以使用dbms.pagecache.memory=0
。但是,如果禁用所有缓存,则基本上可以测量IO子系统的速度,因为每个查询都会进入裸机并从光盘读取。
我建议采用不同的方法:启用两个缓存并运行您想要多次比较的查询来预热缓存。对温暖的缓存进行测量,因为这更接近真实的生产场景。
旁注:在Neo4j 2.3中,对象缓存将消失,我们只有页面缓存。