【问题标题】:neo4j : Limited queries sent in javaneo4j:在 java 中发送的有限查询
【发布时间】:2014-06-01 18:12:22
【问题描述】:

对于在 Tomcat 下开发的网站,我将我的程序连接到数据库 neo4j。连接是通过 jdbc 完成的。 我的程序现在在本地,数据库在远程服务器上。 当我启动 Tomcat 时,它首先检查是否存在特定节点,如果没有,它会创建它们。 大约有 135 个节点。 问题:大约 10 点后,程序停止,并停留在类似无限循环的状态。 我想我应该关闭一些东西,但是什么? 这是我的代码:

private ResultSet sendCommand(String command) throws SQLException
    {
        try(Statement statement = _neo4jConnection.createStatement())
        {
            return statement.executeQuery(command);
        }
    }

以及调用此代码的函数(所有函数都基于相同的结构)

public static Long createNode(NodeLabel labelName)
    {
        try
        {
            ResultSet rs = getInstance().sendCommand("CREATE (n:"+labelName+") RETURN id(n)");
            Long result= rs.next()?rs.getLong("id(n)"):null;
            rs.close();
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }       
    }

【问题讨论】:

  • 有趣的是,我今天处理了完全相同的问题。将尝试一些池化实验,例如通过 tomcat 的 jdbc-pool 并报告回来。
  • 嗨 Stefan,感谢您的支持 :) 你认为,我们应该为每个语句打开和关闭连接(或者在特定数字之后更少?)。

标签: java tomcat jdbc neo4j cypher


【解决方案1】:

在我最近的实验中,我多次重复使用相同的语句,不确定这是最好的方法,但它似乎也很有效。

https://github.com/peterneubauer/blogs/tree/master/csv_jdbc,代码https://github.com/peterneubauer/blogs/blob/master/csv_jdbc/src/test/java/org/neo4j/jdbctest/JDBCTest.java

【讨论】:

  • 嗨,彼得,谢谢,但甚至无法考虑。几乎我所有的陈述都是不同的,在特定数据(节点的id,条件......)方面更少
【解决方案2】:

我找到的唯一解决方案是定期断开并重新连接到数据库(大约 20 条语句后)。这很糟糕,但它确实有效。 好吧,不过,我放弃了jdbc for neo4j,问题太多,而且性能灾难性(大约1s才能得到一个简单的数据),出现的问题还有更多!

不管怎样,谢谢你的帮助

尼可

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多