我已将Neo4j DB从2.3.9升级到3.1.1,因为我想使用新的二进制Bolt协议。在升级之后,我注意到Bolt连接明显慢于" old" http连接。
我在OSX上使用neo4j-core(7.0.5)gem和Ruby 2.4。访问Neo4j DB的所有代码都封装在neo4j-query类中。在" old"代码我使用以下会话初始化了类,该会话在该类的所有其他方法中使用:
def initialize
@session = Neo4j::Session.open(:server_db, 'http://localhost:7474/', basic_auth: { username: 'neo4j', password: 'XYZXYZXYZ'})
end
@session对象在此类中的多个方法中以令人满意的速度使用。
迁移到Neo4j 3.1.1后,我使用以下代码初始化新适配器和查询会话:
def initialize
@neo4j_adaptor = Neo4j::Core::CypherSession::Adaptors::Bolt.new('bolt://neo4j:XYZXYZXYZ@localhost:7687')
@session = Neo4j::Core::CypherSession.new(@neo4j_adaptor)
end
它有效,但非常慢。与#34; old"相比,处理时间缩短了10倍。 http连接。我进一步调查了这个效果,发现创建了数百个Thread,而#34; old"代码只创建4个线程。
我将实例变量更改为Class变量但没有效果。我在这做错了什么?我应该如何实例化Ruby neo4j-core适配器以确保它有效地使用Bolt协议?
非常感谢任何帮助或提示指向我的解决方案。
Krid