spring配置详解-连接池配置

2023-11-20

一、连接池概述
 数据库连接池概述:
  数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个
应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
  数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时
间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
  数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些
数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接
数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设
置要考虑到下列几个因素:
  1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
  2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之
后的数据库操作。
  3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库
连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
目前常用的连接池有:C3P0、DBCP、Proxool
网上的评价是:
C3P0比较耗费资源,效率方面可能要低一点。
DBCP在实践中存在BUG,在某些种情会产生很多空连接不能释放,Hibernate3.0已经放弃了对其的支持。
Proxool的负面评价较少,现在比较推荐它,而且它还提供即时监控连接池状态的功能,便于发现连接泄漏的情况。
配置如下:
1、在spring配置文件中,一般在applicationContext.xml中
     <bean id="proxoolDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
            <property name="driver" value="${jdbc.connection.driverClassName}"/>
            <property name="driverUrl" value="${jdbc.connection.url}"/>
            <property name="user" value="${jdbc.connection.username}"/>
            <property name="password" value="${jdbc.connection.password}"/>
            <!-- 测试的SQL执行语句 -->
           <property name="houseKeepingTestSql" value="${proxool.houseKeepingTestSql}"/>
            <!-- 最少保持的空闲连接数 (默认2个) -->
             <property name="prototypeCount" value="${proxool.prototypeCount}"/>
            <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒) -->
            <property name="houseKeepingSleepTime" value="${proxool.hourseKeepingSleepTime}"/>
            <!-- 最大活动时间(超过此时间线程将被kill,默认为5分钟) -->
             <property name="maximumActiveTime" value="${proxool.maximumActiveTime}"/>
            <!-- 连接最长时间(默认为4个小时) -->
            <property name="maximumConnectionLifetime" value="${proxool.maximumConnectionLifetime}"/>
            <!-- 最小连接数 (默认2个) -->
            <property name="minimumConnectionCount" value="${proxool.minimumConnectionCount}"/>
            <!-- 最大连接数 (默认5个) -->
            <property name="maximumConnectionCount" value="${proxool.maximumConnectionCount}"/>
            <!-- -->
            <property name="statistics" value="${proxool.statistics}"/>
            <!-- 别名 -->
             <property name="alias" value="${proxool.alias}"/>
            <!-- -->
            <property name="simultaneousBuildThrottle" value="${proxool.simultaneous-build-throttle}"/>
     </bean>
     然后注入到sessionFactory中
     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
           <property name="dataSource" ref="proxoolDataSource"/>
     </bean>
 
Porxool 配置文件 
--==--==--==--==--==<proxool.xml>==--==--==--==--==--==--== 
<?xml version="1.0" encoding="UTF-8"?> 
<proxool> 
      <alias>WMS</alias> 
      <driver-url>jdbc:postgresql://192.168.210.184:5432/wms</driver-url> 
      <driver-class>org.postgresql.Driver</driver-class> 
      <driver-properties> 
             <property name="user" value="wms_user" /> 
             <property name="password" value="wms" /> 
      </driver-properties> 
      <minimum-connection-count>2</minimum-connection-count> 
      <maximum-connection-count>40</maximum-connection-count> 
      <simultaneous-build-throttle>20</simultaneous-build-throttle> 
      <prototype-count>2</prototype-count> 
      <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> 
</proxool> 
--==--==--==--==--==<proxool.xml>==--==--==--==--==--==--== 
  
配置说明: 
alias                                          -〉数据库连接别名(程序中需要使用的名称) 
driver-url                                   -〉数据库驱动 
driver-class                                -〉驱动程序类 
driver-properties                        -〉联机数据库的用户和密码 
minimum-connection-count          -〉最小连接数量,建议设置0以上,保证第一次连接时间 
maximum-connection-count         -〉最大连接数量,如果超过最大连接数量则会抛出异常。连接数设置过多,服务器CPU和内存性能消耗很
大。 
simultaneous-build-throttle          -〉同时最大连接数 
prototype-count                          -〉一次产生连接的数量。 
                                                 例:如果现在prototype-count设置为4个,但是现在已经有2个可以获得的连接,那么
将会试图再创建2个连接。 
                                                  但不能超过最大连接数。 
maximum-active-time                 -〉连接最大时间活动 默认5分钟 

maximum-connection-lifetime      -〉连接最大生命时间 默认4小时


注,在实践中如果想配置多个proxoolDataSource,必须要配置不同的alias(别名)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring配置详解-连接池配置 的相关文章

  • 在 Java 中有效地对图像进行颜色循环

    我正在编写一个曼德尔布罗分形查看器 我想以智能的方式实现颜色循环 给定一个图像 我想修改它的 IndexColorModel 据我所知 没有办法修改 IndexColorModel 也没有办法为图像提供新的 IndexColorModel
  • 如何更改 JComboBox 下拉列表的宽度?

    我有一个可编辑的JComboBox其中包含单个字母值的列表 因此 组合框非常小 每个字母都有特殊的含义 对于很少使用的字母 有时用户并不清楚 因此我创建了一个自定义ListCellRenderer显示下拉列表中每个字母的含义 不幸的是 这个
  • 为什么在使用 repaint() 而不是使用 getParent().repaint() 时会出现此 Swing 错误?

    这个问题是基于我不久前在一个简单的 Swing 骰子程序中遇到的问题 我发布的原始问题是here https stackoverflow com questions 22306637 mystery concurrency componen
  • 通过 JDBC 与 CLI 使用 MIT Kerberos 连接到 PostgreSQL 9.4 时出错

    我已经使用 MIT Kerberos 5 设置了 PostgreSQL 9 4 并且可以使用 psql 在 CLI 上连接 提交指纹后 我的委托人是 bgiles postgres REALM pg hba conf 有 host all
  • SimpleDateFormat 无法正确处理 DD

    我正在尝试获得这样的格式 2013 06 15 17 45 我在代码中执行以下操作 Date d new Date SimpleDateFormat ft new SimpleDateFormat YYYY MM DD HH mm Stri
  • 从 Java 启动外部进程:stdout 和 stderr

    我正在使用标准从 java 启动一个外部进程java lang Process 我试图弄清楚该过程的输出是什么 但是采用结合了两者的格式stdout and stderr 目前 我有Process getInputStream它提供了访问s
  • ORMLite - join where 子句中的括号

    我想使用连接三个表QueryBuilder join and QueryBuilder joinor但我想在 where 子句中添加括号 如下所示 WHERE first table where AND second table where
  • Java 中的 TreeSet 与 C#.net 的等效项

    我有 Java 代码 其中包含TreeSet 我想将代码转换为 C 我可以使用哪个等效集合 如果没有 请提出替代方案 那将是系统 集合 通用 SortedSet
  • IntelliJ Idea,如何从控制台删除java文件目录?

    当您运行文件时 它会打开控制台窗口 并且一直在顶部显示该文件所在的目录 这非常令人恼火 因为现在 为了将其他行与目录混合分开 我必须在启动任何 System out println 命令之前使用 n C Program FILEs 我想摆脱
  • 当用户使用相同的凭据登录两次时如何使用户会话无效

    我正在使用带有 Richfaces 和 Facelets 的 JSF 1 2 我有一个应用程序 其中包含许多会话范围的 Bean 和一些应用程序 Bean 假设用户使用 Firefox 登录 创建一个会话 ID A 然后他打开 Chrome
  • Knuth-Morris-Pratt 算法

    解决方案是Knuth Morris Pratt 算法 https en wikipedia org wiki Knuth E2 80 93Morris E2 80 93Pratt algorithm 干草堆 AAAAAAAAA 针 AAA
  • Android Studio 找不到 com.android.support:support-v4:19.1.0

    我已将一个项目导入Android Studio但我收到错误 找不到 com android support support v4 19 1 0 我在哪里可以找到这个文件 我已经使用导入了项目Gradle 我有Android Studio v
  • 添加和完成 PHP 源代码文档的工具 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个已完成的较旧的 PHP 项目 其中有很多内容 我想以 javadoc phpDocumentor
  • 为什么 Cassandra 客户端在生产中没有 epoll 时会失败? [复制]

    这个问题在这里已经有答案了 当我在本地运行服务时 我收到一条警告 指出 epoll 不可用 因此它使用 NIO 很公平 当我将其部署到 Kubernetes 中时 我得到了以下信息 这导致服务无法运行 2017 03 29T19 09 22
  • 使用泛型进行选择排序

    我对整数进行了选择排序并且它正在工作 当我尝试修改程序以使用泛型时 编译器会抱怨 我不知道如何修复它 如果有人能提出一些建议和建设性意见 我将不胜感激 这是代码 public class SelelctionSort public stat
  • C3P0:生产中未返回的连接超时?

    参数unreturnedConnectionTimeout给定时间段后未返回的连接超时 我正在尝试决定是否应该在我的制作中使用它persistence xml 使用它的一大优点是连接池将能够从泄漏的连接中恢复 一个很大的缺点是泄漏的连接将很
  • 从字符串中提取文本 Java

    使用此字符串 ADACADABRA 如何从java中的字符串 ADACADABRA 中提取 CADA 以及如何提取 和 之间的id从下面的链接 http www youtube nocookie com embed zaaU9lJ34c5
  • System.out.println("嗨"+6+10);打印Hi610?

    为什么要这样做 太令人困惑了 运算符优先级和结合性 两点 操作员 如果一个或两个参数都是字符串 则进行字符串连接 操作员 从左到右工作 所以在你的例子中 Hi 6 is Hi6 and Hi6 10 is Hi610 编辑 正如您在对另一个
  • 从 IntelliJ 运行 JavaFX 应用程序

    Versions openjdk版本 11 0 11 2021 04 20 OpenJDK 运行时环境 build 11 0 11 9 Ubuntu 0ubuntu2 20 10 OpenJDK 64 位服务器虚拟机 内部版本 11 0 1
  • 丰富:数据表行跨度问题

    我需要创建一个 rich dataTable 甚至扩展 具有以下功能 我有一个公司类 其中包含产品对象的集合 我想展示下表 我仍然没有弄清楚如何使用子表执行此操作 在所有示例中 我发现子表具有与主表完全相同的列 据推测 我需要在前两列中使用

随机推荐

  • SpringBoot 微服务 详解

    1 注入 1 1 Bean对象管理 Spring Boot 由于没有XML文件 所以所有的Bean管理都放入在一个配置类中实现 配置类就是类上具有 Configuration的类 这个类就相当于之前的applicationContext x
  • 计算机竞赛 基于CNN实现谣言检测 - python 深度学习 机器学习

    文章目录 1 前言 1 1 背景 2 数据集 3 实现过程 4 CNN网络实现 5 模型训练部分 6 模型评估 7 预测结果 8 最后 1 前言 优质竞赛项目系列 今天要分享的是 基于CNN实现谣言检测 该项目较为新颖 适合作为竞赛课题方向
  • bilibili的评论ip属地显示未知

    现象 出于某些原因 我们在日常使用中的大部分平台都开启了IP地址显示 一般会显示当事人所在的地址 这其中就有一些奇怪的地址 在此不谈魔法 就比如我最近在刷B站的时候 就在评论区发现了一些显示 未知 的ip 而只要点进他们的主页还是会发现他们
  • 广度优先搜索(BFS)(队列实现) 走迷宫

    BFS应用 寻找最短路径或者遍历路径 树 图或者更抽象的 实现方法 队列 为什么bfs需要队列实现 队列的原理是先进先出 而广度优先搜索类似于树的层次遍历 从离根节点最近的点开始向外扩散 因此用队列将最先遍历的点存入 后遍历的点后存入 符合
  • react 父组件调用子组件的方法

    子组件中 const child forwardRef props ref gt useImperativeHandle ref gt 这里面的方法是暴露给父组件的 test console log 我是组件里的test方法 test2 t
  • druid 手动指定数据源_Springboot集成 Druid

    前言 对于数据访问层 无论是Sql还是NoSql SpringBoot默认采用整合SpringData的方式进行统一管理 添加大量的自动配置 屏蔽了很多设置 引入了各种XxxTemplate和XxxRepository来简化我们队数据访问层
  • 【JS 构造

    个人格言 时间是亳不留情的 它真使人在自己制造的镜子里照见自己的真相 Git专栏 Git篇 JavaScript专栏 js实用技巧篇 该专栏持续更新中 目的是给大家分享一些常用实用技巧 同时巩固自己的基础 共同进步 欢迎前来交流 你的一键三
  • Java POI输出excel单元格画斜线

    sheet cell画斜线 首先初始化HSSFWorkbook对象 通过此对象创建excel的一个名称为 line 的sheet 下面是通过sheet对象创建单元格 HSSFWorkbook wb new HSSFWorkbook HSSF
  • springboot分模块问题

    springboot 分模块开发时 mvn clean install报错 Failed to execute goal org springframework boot spring boot maven plugin 1 5 9 REL
  • CentOS系统如何如设置使系统自动锁屏的时间?

    方便大家 Application System Tools Settings Privacy close Screen Lock Lock Screen After Blank For 可以关闭 可以自己设置吧 我设置了1个小时
  • VMWare虚拟机安装的问题

    VMWare虚拟机安装Win10出现 Attempting to start up from 直接上图 选择ISO镜像以后 开启虚拟机出现以下界面 等待一会没有操作以后出现以下界面 解决方法 1 关闭虚拟机电源 一定要关闭 2 找到该虚拟机
  • 简单图文解释冯诺依曼体系结构(通俗易懂版)

    冯诺依曼式计算机主要由输入设备 输出设备 控制器 运算器 存储器该五个组成部分构成 我们可以将该体系结构的运作通过人类接收信息 处理信息 并输出信息这个过程来加以类比理解 人类 当眼睛看到某些信息 这些信息被存储到记忆装置 大脑从记忆装置取
  • 热敏电阻温度特性曲线_空调温度传感器知识学习。

    在空调维修过程中 温度传感器 热敏电阻 故障比例较高 一旦出现开路 短路或特性曲线不良等故障 空调将显示不正常的代码 不能正常工作 由于温度传感器上没有标明参数和阻值 往往在维修中难以确定 就是同一品牌 不同型号 其阻值也不一定相同 温度传
  • CRC校验关键点说明(内附C语言CRC校验库)

    文章目录 目的 CRC校验关键点 参数模型 计算方式 CRC校验库 源文件 使用测试 总结 目的 CRC即循环冗余校验码 Cyclic Redundancy Check 是数据通信领域中最常用的一种查错校验码 其特征是信息字段和校验字段的长
  • 【Arduino基础教程】Moisture Sensor土壤湿度传感器

    Moisture Sensor土壤湿度传感器 Moisture Sensor土壤湿度传感器可读取在其周围的土壤存在的水分的量 因此 它可以用于监视你的花园土壤湿度并提醒你适时浇花 模块特征 供电 3 3v 或者 5v 输出信号 0 4 2v
  • 我在spring4整合hibernate5遇到的问题

    1 nested exception is java lang NoClassDefFoundError org hibernate engine SessionFactoryImplementor hibernate4整合spring3
  • 逆矩阵的算法

    花了10分钟 终于明白矩阵的逆到底有什么用 首先 我们先来看看这个数的倒数 倒数 其实矩阵的逆矩阵也跟倒数的性质一样 不过只是我们习惯用A 1表示 问题来了 既然是和倒数的性质类似 那为什么不能写成1 A 其实原因很简单 主要是因为矩阵不能
  • 前端vue项目部署到tomcat,一刷新报错404解决方法

    原文链接 https my oschina net u 1471354 blog 4277008 VUE项目部署到Tomcat之后 刷新页面会出现404 此问题主要是使用了VUE router的History模式 一 解决方案 1 编辑se
  • 海思编码:1、mpp系统详谈以及VI、VPSS、VENC之间的关系

    在HiMPP手册中都会有这么一张图 先讲一下视频缓存池这个概念 视频缓存池主要向媒体业务提供大块物理内存管理功能 负责内存的分配和回收 这部分具体什么作用 首先视频输入回需要大量的内存 打比方1080P的视频输入 VI部分怎么保存或者使用呢
  • spring配置详解-连接池配置

    一 连接池概述 数据库连接池概述 数据库连接是一种关键的有限的昂贵的资源 这一点在多用户的网页应用程序中体现得尤为突出 对数据库连接的管理能显著影响到整个 应用程序的伸缩性和健壮性 影响到程序的性能指标 数据库连接池正是针对这个问题提出来的