`
jiagou
  • 浏览: 2530791 次
文章分类
社区版块
存档分类
最新评论

数据库连接池之超时总结 .

 
阅读更多

大家都觉得使用连接池可以使连接更好的控制,于是乎简单的配置了一下连接池就行了,只要能连接到数据库就觉得什么都ok了.其实不然,如果不正确的配置一 下连接池,那将得不偿失!原因是:连接池的确会减少每次连接数据库对系统带来的开销,因为连接池中会存在一些可用的连接,程序使用的时候直接来这里取就行 了,连接池中的连接一般情况下是不会被关闭的,这点就是问题的所在!这么多的没关闭连接会直接耗掉数据库所能提供的连接数!这和直接使用程序去连接而忘了 关闭连接是一样的效果!甚至更为严重(因为连接池中的连接会不停的被发sql去test而不会过时,程序中的连接会超时)!

所以以后使用连接池时,一定要记得配置超时选项,而不是简单的配置一下最大数和最小数就行了.大多数连接池都有一个配置池中超时连接的选项,比如dpcp 的maxWait,proxool的maximum-connection-lifetime,jboss自带连接池的 IdleTimeoutMinutes等,但是它们默认都是0过-1L!也就是说,默认情况下,连接池中的连接是不会超时的!这点很重要:池中的连接永远保持着与数据库的连接!!当使用完这些连接后如果再有其它外来连接想使用数据库的话,数据库就再没有可用的连接可以提供了!(注:这句话可能有问题,需要查证

所以在配置连接池的时候一定要记得把这些超时选项配置好,不然,使用连接池将得不偿失.
造成数据库连接池之超时总结:
1.连接池配置时,要注意的 地方:最大连接数小于或者等于数据库服务器端配置的最大连接数,否则多余的连接在被应用程序使用时将可能会出现连接超时

2.网络阻塞:由于每次连接同时往数据库服务器端提交或者维护大量数据,如果网络不稳定也会造成连接超 时
3.应用程序中释放占用的数据库资源,由于connect--->statement--->resultSet为爷--->父--->子关系,
statement和resultSet被实例化,实际上在数据库端开启游标之类的资源,需要应用程序这边close掉,所以在close连接时,先要关闭resultSet,statement ,否则可能导致服务器端资源耗尽,同样也会出现应用程序连接超时问题

分享到:
评论

相关推荐

    数据库连接池技术详解

    在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄漏 。 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能...

    Qt 多线程连接数据库——数据库连接池

    * 数据库连接池特点: * 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接...

    连接池管理连接oracle数据库

    这是用连接池技术管理连接oracle数据库的工具类代码,如果想连接MySQL,直接修改配置文件即可。

    数据库连接池及其管理

    课程设计 编写一关于Microsoft Access数据库连接池及其管理的相关类,要求能从XML配置文件中读取该数据库驱动程序,数据库名,连接池最大连接数,最多等待用户数,查询数据库超时时间及用户最长等待时间等信息;...

    手写数据库连接池(java)连sqlserver

    就手写了一份数据库连接池(java),连接sqlserver,里面一共两个java代码,Conn类包含了Connection和标志位,myconnection包含了数据库连接池的使用:获取连接,增加连接,释放连接,连接超时收回,释放空闲连接等:...

    数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术

    数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术。它的主要目的是提高数据库连接的重用性和性能。在传统的数据库连接方式中,每次与数据库建立连接时都需要进行一系列的网络通信...

    数据库连接池jnui

    数据库连接池:Connection pooling,它是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。 数据库连接池运行机制 从连接池获取或创建可用连接; 使用...

    数据库连接池

    使用数据库连接池技术的好处 ... 统一的连接管理,避免数据库连接泄漏 在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄漏。

    Java中数据库连接池原理机制的详细讲解

    连接池类是对某一数据库所有连接的“缓冲池”,主要实现以下功能:从连接池获取或创建可用连接;使用完毕之后,把连接返还给连接池;在系统关闭前,断开所有连接并释放连接占用的系统资源;还能够处理无效连接(原来...

    Kettle简单参数化配置连接数据库

    参数化配置数据库连接,以及简单shell如何传参调度Kettle

    ftp连接池实例

    其实ftp连接池跟数据库连接池的原理是差不多的,不同的是ftp连接池有个连接时间的限制,如果你没设置的话,它的默认连接服务器的时间是0,所以我们要合理的设置它的服务器的时间,ftp.setConnectTimeout(5000);...

    proxool连接池配置

    -- 连接池的别名 --> <alias>DBPool</alias> - <!-- proxool只能管理由自己产生的连接 --> <driver-url>jdbc:sqlserver://localhost:1433;dataBaseName=books</driver-url> - <!-- JDBC驱动程序 --> ...

    Python基于多线程操作数据库相关问题分析

    解决方法:使用数据库连接池,并且每次操作都从数据库连接池获取数据库操作句柄,操作完关闭连接返回数据库连接池。 *连接数据库需要设置charset = 'utf8', use_unicode = True,不然会报中文乱码问题 *网上说解决...

    spring boot配置MySQL数据库连接、Hikari连接池和Mybatis的简单配置方法

    主要介绍了spring boot配置MySQL数据库连接、Hikari连接池和Mybatis的简单配置方法,需要的朋友可以参考下

    Delphi使用ADO连接池(存储过程示例)

    一个使用ADO连接池的示例,演示了TADOStoredProc动态参数的使用,带重连机制 =================== unit UnitDemo; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

    数据连接池

    * 数据库连接池 * 单例对象 */ public class DBConnectionManager { static private DBConnectionManager instance; // 唯一实例 static private int clients; private Vector<Driver> drivers = new Vector...

    mysql C API

    2. 支持数据库连接池; 3. 支持数据库字符转义,能保持包括 ' 等字符到数据库 4. 支持客户端编码类型指定,解决中文乱码问题 3. 2013年 版本是原来版本的修正版本; 主要增加功能如下: 1. 优化编码接口内存分配; 2. ...

    基于SpringBoot+Vue的电影售票及影院管理系统源码+sql数据库(高分毕设).zip

    基于SpringBoot+Vue的电影售票及影院...数据库连接池:druid 分页插件:pageHelper vue安装对应的版本: nodejs 14.xx npm 6.xx vue 2.x C:\Users\dell>node -v v14.17.6 C:\Users\dell>npm -v 6.14.15 C:\Use

    c# log 日志 单体 管理

    2012-10-23 10:15:23 [Error]: 数据库连接失败!或者是一下SQL语句有误---select DATEADD(day, 1, finish_date+task_start_time) from [TPH_ATT].[dbo].[TPH_timing_tasks] where task_name = 'arrange_kaoqin_record...

    Tomcat中配置数据源连接池

    maxAction="20" //连接池的最大数据库连接数。设为0表示无限制。 maxldle="10" //最大空闲数 设为0表示无限制 maxWait="-1" //最大连接等待时间。如果超时将接到异常。设-1表示 无限制。 /> </Context>

Global site tag (gtag.js) - Google Analytics