标签: connection-pooling

Mysql连接池问题:值得吗?

我记得听说mysql中的连接过程与其他RDBMS相比设计得非常快,因此如果启用连接池,那么使用提供连接池(SQLAlchemy)的库实际上不会对您有太大帮助.

有人对这个有经验么?

我很乐意启用它,因为如果某些代码对数据库连接做了某些有状态的事情并且(可能是错误地)不会在自身之后进行清理,那么通常在关闭连接时将被清除的状态将改为传播到后续代码,获得循环连接.

python mysql connection-pooling sqlalchemy

15
推荐指数
2
解决办法
1万
查看次数

Java Connection Pooling最佳实践?

在厌倦了c3p0的持续锁定后,我转向BoneCP,为我的数据库提供了一个替代连接池.我有一个服务器应用程序,每分钟处理大约7,000个项目,需要将这些项目记录到我们的MySQL数据库中.我目前有100个工作线程,并设置我的池如下:

BoneCPConfig config = new BoneCPConfig();
      config.setJdbcUrl("jdbc:mysql://"+Settings.MYSQL_HOSTNAME+"/"+Settings.MYSQL_DATABASE+"?autoReconnectForPools=true" ); 
      config.setUsername(Settings.MYSQL_USERNAME); 
      config.setPassword(Settings.MYSQL_PASSWORD);
      config.setMinConnectionsPerPartition(5);
      config.setMaxConnectionsPerPartition(10);
      config.setPartitionCount(5);
      config.setAcquireIncrement(5);
      connectionPool = new BoneCP(config); // setup the connection pool
Run Code Online (Sandbox Code Playgroud)

这些应用程序的可接受设置是什么?我问,因为在运行一两分钟后,我在尝试呼叫getConnection池时遇到了BoneCP异常.谢谢您的帮助.

这是我在工作线程中用于db调用的代码,它不能在线上失败dbConn = this.dbPool.getConnection().我没有正确关闭连接吗?

private void insertIntoDb() {
    try {  
        Connection dbConn = this.dbPool.getConnection();

        try {
            PreparedStatement ps3 = dbConn.prepareStatement("INSERT IGNORE INTO test_table1 SET test1=?, test2=?, test3=?");
            ps3.setString(1, "some string");
            ps3.setString(2, "some other string");
            ps3.setString(3, "more strings");
            ps3.execute();
            ps3.close();

            PreparedStatement ps4 = dbConn.prepareStatement("INSERT IGNORE INTO test_table2 SET test1=?, test2=?, test3=?");
            ps4.setString(1, "some string"); …
Run Code Online (Sandbox Code Playgroud)

java database multithreading connection-pooling bonecp

15
推荐指数
1
解决办法
1万
查看次数

基础知识 - Hibernate/JDBC连接池问题疑难解答

什么是Hibernate对从底层连接池获取的数据库连接的责任.是否在使用之前测试连接是否已关闭?如果是这样从游泳池获得另一个连接?

我在下面列出了错误和确认信息.任何我可以开始解决这个问题的想法都会非常有帮助.以及我们正在使用的SQL Server驱动程序设置的任何建议.

从Catalina日志:

04-Nov-2010 21:54:52.691 WARNING org.apache.tomcat.jdbc.pool.ConnectionPool.abandon Connection has been abandoned PooledConnection[ConnectionID:8]:java.lang.Exception
    at org.apache.tomcat.jdbc.pool.ConnectionPool.getThreadDump(ConnectionPool.java:926)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:681)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:545)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:166)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:106)

从我们的应用程序日志

2010-11-04 21:54:52,705 [tomcat-http--18] WARN  util.JDBCExceptionReporter  - SQL Error: 0, SQLState: 08S01
2010-11-04 21:54:52,707 [tomcat-http--18] ERROR util.JDBCExceptionReporter  - Socket closed
2010-11-04 21:54:52,708 [tomcat-http--18] ERROR transaction.JDBCTransaction  - JDBC rollback failed
java.sql.SQLException: Connection has already been closed.
    at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:112)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:94)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:94)
    at org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:132)
    at $Proxy38.rollback(Unknown Source)
    at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:217)
    at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:196)
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:676)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845)
    at …

java hibernate connection-pooling jdbc

15
推荐指数
2
解决办法
4万
查看次数

如何使用Java创建PostgreSQL连接池?

我正在尝试使用连接池,但我不理解它.谁实现了它?软件,驱动程序或数据库?

我如何使用连接池运行程序?我正在使用本机PostgreSQL驱动程序.

我需要一个代码示例.我正在做一个webcrawler,它有很多与数据库的连接.

java postgresql connection-pooling

15
推荐指数
1
解决办法
2万
查看次数

快速可靠的bonecp连接池替代方案

我在我的Java项目中使用BoneCP.但是,遗憾的是,我发现数据库发生故障后该池无法恢复.我不是唯一一个有这种问题的人(如果你想要看官方论坛).由于我(和许多其他人)从未在bonecp论坛上得到答案,似乎不再支持这个项目,我的问题不太可能得到解决.

因此,我正在寻找一个替代的主动开发和支持的连接池库,它能够正确处理数据库中断,并在数据库再次可用时立即恢复.

java connection-pooling jdbc bonecp

15
推荐指数
4
解决办法
8341
查看次数

你如何在PHP中管理数据库连接?

所以最近我真的开始积极地使用php,我需要一些关于使用数据库连接的不同方法的见解.

起初我只使用了简单的mysql_connect():

<?php
    $connection = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
    mysql_select_db(DB_DB, $connection);
?>
Run Code Online (Sandbox Code Playgroud)

过了一会儿,我创建了一个数据库类,我开始在每个文件中包含并初始化 - 如下所示:

<?php
class MySQL_DB {

var $connection;

function MySQL_DB(){
    $this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
    mysql_select_db(DB_DB, $this->connection);
}

function query($q){
    $res = mysql_query($q, $this->connection) or die(mysql_error());
    return $res;
}
}

$database = New MySQL_DB;
?>
Run Code Online (Sandbox Code Playgroud)

这就是我当时正在使用的 - 它工作得很好 - 但总有办法改进.

所以我的问题是你如何管理你的数据库连接?

  • 你上课了吗?
  • 你的类包含什么(只是连接甚至函数?)
  • 你推荐什么做法?

php oop database-connection connection-pooling

14
推荐指数
3
解决办法
8452
查看次数

JDBC连接池:连接重用?

根据我的理解,JDBC连接池(在基本级别)以这种方式工作:

  1. 在应用初始化期间创建连接并放入缓存
  2. 按需提供这些缓存的连接到应用程序
  3. 一个单独的线程维护连接池,执行以下活动:
    • 丢弃已使用的连接(关闭)
    • 创建新连接并添加到缓存以维护特定的连接数

但是,每当我在JDBC连接池讨论中听到"连接重用"这个术语时,我就会感到困惑.何时进行连接重用?

这是否意味着连接池为两个不同的数据库交互提供相同的连接(不关闭它)?或者,有没有办法继续使用连接,即使它在数据库调用后关闭?

java connection-pooling jdbc

14
推荐指数
2
解决办法
6954
查看次数

node-mysql连接池

我正在使用node-mysql模块(https://github.com/felixge/node-mysql)或(http://utahjs.com/2010/09/22/nodejs-and-mysql-introduction/).

此API处理连接池也是如此?

我的意思是每个用户请求我打电话Client.connect()来查询MySQL并释放连接:Client.end().

这是正确的方法,还是我应该只在代码中连接/断开一次.

我正在从这份文件中学习:https://github.com/felixge/node-mysql/blob/master/Readme.md

mysql database connection-pooling node.js

14
推荐指数
2
解决办法
2万
查看次数

为什么我的iSeries/ASP.NET MVC 4应用程序中没有重用连接?

我们在Windows 2008服务器场上运行MVC 4 Web应用程序.我们一直在尝试将服务器场升级到Windows 2008 R2 64位服务器,但在iSeries(运行V7R1)上遇到连接池问题.我们经常调用DB2 java存储过程并启用连接池以减少建立连接所需的时间.下面是我们正在使用的连接字符串的示例.

<add name="DB2" connectionString="ConnectionTimeout=45;Pooling=true;MinimumPoolSize=1;MaximumPoolSize=-1;MaximumUseCount=100;CheckConnectionOnOpen=true;DataSource=XXX;Naming=SQL;DataCompression=True;UserID=username;password=pwd;DefaultCollection=XXX" />

自从进入2008R2以来,iSeries上的连接数量(QZDASOINIT作业)不断增加,从而损害了iSeries的性能,从而影响了我们的应用程序.代码库与2008 32位服务器上的代码库完全相同.我们为Any CPU设置了目标平台,并在IIS中将"启用32位应用程序"设置为True.我们尝试在本月早些时候升级到这些服务器,并且重置IIS不会像预期的那样自动终止盒子上的连接,并且在我们完全恢复到旧服务器之前不会创建任何新连接.

它似乎似乎没有获得已经建立的连接并不断创建新的连接.当涉及到与iSeries的连接池时,是否有人知道在升级到32位到64位时是否存在我们错过的步骤?

.net ado.net connection-pooling ibm-midrange asp.net-mvc-4

14
推荐指数
2
解决办法
3597
查看次数

Tomcat JDBC连接池:testOnBorrow vs testWhileIdle

由于各种原因,池中的连接可能变为无效:服务器连接超时,网络问题......

我的理解是Tomcat JDBC连接池不保证它为应用程序提供的连接的有效性.

为了防止(实际上只降低风险)从池中获得无效连接,解决方案似乎是连接验证的配置.验证连接意味着在数据库上运行非常基本的查询(例如SELECT 1;在MySQL上).

Tomcat JDBC连接池提供了几个测试连接的选项.这两个我觉得更有趣的是testOnBorrowtestWhileIdle.

首先,我认为这testOnBorrow是最好的选择,因为它在将连接提供给应用程序之前基本上验证了连接(最大频率定义为validationInterval).

但是经过一秒钟后我才意识到在使用它之前测试连接可能会影响应用程序的响应能力.所以我认为使用testWhileIdle它可以更高效,因为它在不使用时测试连接.

无论我选择哪个选项,它们似乎只会降低获得无效连接的风险,但这种风险仍然存在.

所以我最后问:我应该使用testOnBorrow或者testWhileIdle两者兼而有之?

另一方面,我很惊讶validationInterval不适用testOnReturn,我没有达到目的testOnConnect.

tomcat connection-pooling jdbc

14
推荐指数
2
解决办法
1万
查看次数