java - 缓冲 MySQL 查询或建立多个连接?

标签 java mysql

所以我目前正在开发一个 Java 应用程序,该应用程序应该将特定事件记录到数据库中。我希望每分钟最多有 15 到 20 次插入,基本上我想知道我是否应该为每个插入语句建立一个新连接,或者只要应用程序正在运行就保持一个打开。

我正在做的是:

public void logEvent(MyCustomEvent e) {
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;

    try {
        con = DriverManager.getConnection(url, user, password);
        st = con.createStatement();

        st.executeUpdate("INSERT INTO Table(" + e.data + ");");

    } catch (SQLException ex) {
        Logger lgr = Logger.getLogger(MySQLConnector.class.getName());
        lgr.log(Level.SEVERE, ex.getMessage(), ex);

    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (con != null) {
                con.close();
            }

        } catch (SQLException ex) {
            Logger lgr = Logger.getLogger(MySQLConnector.class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
        }
    }
}

每次建立新连接都没有问题,还是我可以/应该以某种方式缓冲输入?

最佳答案

建立联系的成本很高,所以最好不要一直建立联系。然而,一直保持一个连接打开有其自身的问题(如果它由于某种原因关闭会发生什么?)

为什么不看看数据库连接池 - 谷歌将为您展示几个相互竞争的连接池实现。您将两全其美。对于您的应用程序,连接似乎是永久打开的,但如果由于某种原因连接失败,连接池将为您重新打开它。

关于java - 缓冲 MySQL 查询或建立多个连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17275641/

相关文章:

java - Eclipse SVN Subversive - 忽略我的所有文件

java - Selenium 网络驱动程序 : can I check if a resource (e. g。 XML 文件)已加载?

java - PlatformUI.getWorkbench().getService(IEventBroker.class) 返回 null

java - 创建一个公共(public)静态对象不好吗

mysql - 复杂的 MySQL 排序

php - 多选和mysql查询

java - FastVectorHighlighter 短语突出显示不适用于词干提取

MySQL LOAD DATA LOCAL INFILE 避免重复

php - 如何访问同名的PHP表元素

mysql - 引用自身的 SQLite 表