数据库连接池

线程池和数据库连接池的原理与使用

好久不见. 提交于 2019-12-02 19:10:02
线程池的原理: 来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个新的线程不就完了?这也许是个不错的方法,因为它能使得你编写代码相对容易一些,但你却忽略了一个重要的问题??性能!一个省级数据大集中的银行网络中心,高峰期每秒的客户端请求并发数超过100,如果为每个客户端请求创建一个新线程的话,那耗费的CPU时间和内存将是惊人的,如果采用一个拥有200个线程的线程池,那将会节约大量的的系统资源,使得更多的CPU时间和内存用来处理实际的商业应用,而不是频繁的线程创建与销毁。 数据库连接池: 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池( 简单说:在一个“ 池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放

数据库连接池

不打扰是莪最后的温柔 提交于 2019-12-02 06:24:15
数据库连接池 数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态的对池中的连接进行申请、使用、释放 ;   (1)程序初始化时创建连接池  (2)使用时向连接池申请可用连接  (3)使用完毕,将连接返还给连接池   (4)程序退出时,断开所有的连接,并释放资源 创建数据库连接池 DBCP : Apache组织下面的一个开源的数据库连接池 1.利用maven 导入DBCP连接池依赖的jar commons-dbcp2-2.4.0 commons-dbutils1.4 mysql-connector-java-5.1.11-bin\ <!--mysql驱动,由于DBCP封装的JDBC,所以仍然需要mysql驱动包--> < dependency > < groupId > mysql </ groupId > < artifactId > mysql-connector-java </ artifactId > < version > 6.0.6 </ version > </ dependency > <!--<!– dbcp包 –>--> < dependency > < groupId > commons-dbcp </ groupId > < artifactId > commons-dbcp </

Hibernate使用到包详解.jar

大憨熊 提交于 2019-12-02 05:46:04
主要介绍的是Hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍。 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包. 1.hibernate2: jar Hibernate的库,没有什么可说的,必须使用的jar包. 2.cglib-asm.jar CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包. 3.dom4j.jar dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j,直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包

hibernate 各个jar包的含义

梦想与她 提交于 2019-12-02 05:45:54
Hibernate一共包括了23个jar包,令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍。   下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包:   hibernate2.jar:   Hibernate的库,没有什么可说的,必须使用的jar包   cglib-asm.jar:   CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包   dom4j.jar:   dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j,直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar 包,Hibernate用它来读写配置文件。

JFinal配置数据库连接池插件和表类映射

白昼怎懂夜的黑 提交于 2019-12-02 01:22:12
配置数据库连接池插件,此处以 Druid 为例,还需要配置数据库访问插件,即 ActiveRecord 插件,用于建立数据库中 Table 和 Java Bean 的 mapping 映射: public void configPlugin ( Plugins me ) { // 配置 druid 数据库连接池插件 DruidPlugin druidPlugin = new DruidPlugin ( PropKit . get ( "jdbcUrl" ) , PropKit . get ( "user" ) , PropKit . get ( "password" ) . trim ( ) ) ; me . add ( druidPlugin ) ; // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin ( druidPlugin ) ; // 所有映射在 MappingKit 中自动化搞定 _MappingKit . mapping ( arp ) ; me . add ( arp ) ; } 其中: PropKit.get(xxx) 方法是从静态资源文件读取配置的数据库连接参数,包括 jdbcUrl 、 user 和 password 来源: CSDN 作者: Mr.甘 链接: https:/

几种常见数据库连接池的使用比较

岁酱吖の 提交于 2019-12-02 00:06:06
感觉在介绍之前有必要阐述一下连接池的几个概念,有助于后边一些文字的理解。 最原始的数据库使用就是打开一个连接并进行使用,使用过后一定要关闭连接释放资源。由于频繁的打开和关闭连接对jvm包括数据库 都有一定的资源负荷,尤其应用压力较大时资源占用比较多容易产生性能问题。由此使用连接池的作用就显现出来,他的原理其实不复杂: 先打开一定数量的数据库连接,当使用的时候分配给调用者,调用完毕后返回给连接池,注意返回给连接池后这些连接并不会关闭,而是 准备给下一个调用者进行分配。由此可以看出连接池节省了大量的数据库连接打开和关闭的动作,对系统性能提升的益处不言而喻。 几个概念: 最小连接--应用启动后随即打开的连接数以及后续最小维持的连接数。 最大连接数--应用能够使用的最多的连接数 连接增长数--应用每次新打开的连接个数 举个例子说明连接池的运作: 假设设置了最小和最大的连接为10,20,那么应用一旦启动则首先打开10个数据库连接,但注意此时数据库连接池的正在使用数字为0--因为你并没有使用这些连接,而空闲的数量则是10。然后你开始登录,假设登录代码使用了一个连接进行查询,那么此时数据库连接池的正在使用数字为1、空闲数为9,这并不需要从数据库打开连接--因为连接池已经准备好了10个给你留着呢。登录结束了,当前连接池的连接数量是多少?当然是0,因为那个连接随着事务的结束已经返还给连接池了

数据库连接池clearpool(java实现)详解

主宰稳场 提交于 2019-12-02 00:05:54
clearpool的maven项目托管在 https://github.com/xionghuiCoder/clearpool ,同时也可以在 http://www.oschina.net/p/clearpool 上了解它的简单介绍。 首先大家可能会问,现在开源社区已经有了很多数据库连接池:c3p0、proxool、dbcp、bonecp、druid和tomcat_jdbc等,我们还需要重新发明轮子么?是的,上面这些连接池都非常优秀,并且都有自己优点:比如高并发时druid和tomcat_jdbc近乎完美的性能,再比如proxool和druid的监控功能;然而它们并不是完美的,比如性能是否还能再提升、如何管理分布式数据库、如何支持分布式事务。好的,下面就来介绍下clearpool以及它是如何支持这些功能的。 1、如何使用clearpool clearpool提供的接口类为ClearPoolDataSource.java。 这里说下clearpool和其它数据库池的不同的地方: 1)它放弃了最小连接池数(min-pool-size),取而代之的是核心连接池数(core-pool-size),类似于java线程池ThreadPoolExecutor; 2)它不提供返回真实连接的方法,ClearPoolDataSource.java的getConnection(

Java之数据库连接池

北城余情 提交于 2019-12-01 19:12:30
未使用数据库连接池,需要从底层申请数据库连接来访问数据库,访问结束之后需要把链接丢弃。长此以往浪费时间。 数据库连接池就是用容器来申请访问,容器里有很多连接对象,用户来容器里拿一个连接对象一起访问数据库,访问完后再把对象归还给数据库。节约了时间。 来源: https://www.cnblogs.com/maomaodesu/p/11713833.html

JDBC--数据库连接池

强颜欢笑 提交于 2019-12-01 17:34:33
一、数据库连接池 (1)JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:   在主程序(如servlet、beans)中建立数据库连接。 进行sql操作 断开数据库连接。 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。数据库的连接资源并没有得到很好的重复利用.若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。 对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将导致重启数据库。 这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。 (2)数据库连接池(connection pool) 基本思想是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。 数据库连接池负责分配、管理和释放数据库连接

JDBC Item5: 数据库连接池

不想你离开。 提交于 2019-12-01 17:33:18
一、应用程序直接获取数据库连接的缺点   用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示: 二、使用数据库连接池优化程序性能 2.1 数据库连接池的基本概念   数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出来的.数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。如下图所示: 数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中, 这些数据库连接的数量是由最小数据库连接数来设定的.无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量.连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中. 数据库连接池的 最小连接数 和 最大连接数 的设置要考虑到以下几个因素: 最小连接数:是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费.