我一直在尝试比较 Neo4j 中的查询性能。
为了使查询更高效,我添加了索引,使用profile分析结果,并尝试在使用USING INDEX时做同样的事情。
在大多数查询中,使用第二个选项(使用 USING INDEX)时数据库命中要好得多,行数相同或更少,但时间性能似乎并不可靠:在几个查询中,添加 USING INDEX 的速度较慢,但性能更好通过重新执行查询,参数(数据库命中数和行数)和时间变得更好。
为了阻止缓存的干扰,转到属性文件,将neo4j.properties中的cache_type更改为none并重新启动neo,但似乎相同查询的结果每次都更快(直到某个点) 。
测试它的最佳方法是什么?
Neo4j 有(最高 2.2.x)两层缓存架构 http://neo4j.com/docs/2.2.3/configuration-caches.html. With cache_type=node
您只切换对象缓存。要禁用页面缓存,您可以使用dbms.pagecache.memory=0
。然而,如果所有缓存都被禁用,您基本上可以测量 IO 子系统的速度,因为每个查询都会进入裸机并从磁盘读取。
我建议采用不同的方法:启用两个缓存并运行要多次比较的查询以预热缓存。对预热的缓存进行测量,因为这更接近实际的生产场景。
附带说明:在 Neo4j 2.3 中,对象缓存将消失,我们只有页面缓存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)