【问题标题】:How to decrease database connections?如何减少数据库连接?
【发布时间】:2012-04-16 06:19:03
【问题描述】:

您好,任何人都可以向我解释如何减少数据库连接。我在 java 和 jdbc 中使用连接池概念开发了一个应用程序。但在我的应用程序中,我只为这个开放的 200 连接提供 MaxActive=200 。但在我的情况下,一旦应用程序启动,它将打开 1400 个数据库连接..请帮助我如何处理。

  <Resource
            name="jdbc/tm4u"
            auth="Container"
            type="javax.sql.DataSource"
            driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
            url="jdbc:sqlserver://192.168.1.230:1433;databaseName=XX;User=abc;Password=****;selectMethod=cursor"
        username="abc"
        password="******"
                maxActive="200"
      maxWait ="100"

       maxIdle="10"
            />

以上代码为JNDI配置文件。

【问题讨论】:

  • 你怎么知道它启动了 1400 个连接?
  • 那么您想将这 1400 个数据库连接减少到 maxActive 级别吗?
  • 上午使用查询检查计数.. 它总是 1400+
  • 是的。否则可能是数据库崩溃了
  • 检查是否正确关闭语句和结果集。如果您在使用后将连接正确地返回到池中。

标签: java sql-server-2005 jdbc jndi connection-pooling


【解决方案1】:

基本上你需要在连接对象上调用close方法。

  1. 最好的答案是打开一次连接并保存连接对象。当您第一次从驱动程序管理器 (DriverManager.getConnection) 或从 JDBC 驱动程序特定类 (SQLConnect.getConnection()) 获取 Connection 对象时,您将打开连接。如有必要,将此对象保存在类中的实例变量或静态变量中。在结束应用程序之前关闭连接 (connection.close())。

  2. 使用单例模式实现类的静态实例。在单例的构造函数中打开连接,并将其保存为实例变量。每当您需要连接时,请在单例对象上调用方法。在单例的析构函数中调用connection.close()方法。

  3. 每当你打开一个连接时,当你完成它的所有语句时调用 close()。

【讨论】:

    猜你喜欢
    • 2019-06-17
    • 2011-11-10
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2021-01-12
    • 2016-08-24
    相关资源
    最近更新 更多