我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java数据库连接池Druid的配置参数有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java数据库连接池Druid的配置参数有哪些

这篇文章主要介绍“Java数据库连接池Druid的配置参数有哪些”,在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据库连接池Druid的配置参数有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、配置参数

Druid 连接池的配置参数兼容 DBCP,个别配置的语意有所区别。

配置缺省值说明
name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)。配置此属性版本至少为 1.0.5,低于该版本设置 name 会出错。
url 连接数据库的 url
username 连接数据库的用户名
password 连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。
driverClassName根据url自动识别这一项可配可不配,如果不配置 Druid 会根据 url 自动识别 dbType,然后选择相应的 driverClassName
initialSize0初始化时建立物理连接的个数。初始化发生在显示调用 init 方法,或者第一次 getConnection 时
maxActive8最大连接池数量
maxIdle8已经不再使用,配置了也没效果
minIdle 最小连接池数量
maxWait 获取连接时最大等待时间,单位毫秒。配置了 maxWait 之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock 属性为 true 使用非公平锁。
poolPreparedStatementsfalse是否缓存 preparedStatement,也就是 PSCache。PSCache 对支持游标的数据库性能提升巨大,比如说 oracle。在 mysql 下建议关闭。
maxPoolPreparedStatementPerConnectionSize-1要启用 PSCache,必须配置大于 0,当大于 0 时,poolPreparedStatements 自动触发修改为 true。在 Druid 中,不会存在 Oracle下 PSCache 占用内存过多的问题,可以把这个数值配置大一些,比如说 100
validationQuery 用来检测连接是否有效的 sql,要求是一个查询语句,常用select 'x'。如果 validationQuery 为 null,testOnBorrow、testOnReturn、testWhileIdle 都不会起作用。
validationQueryTimeout 单位:秒,检测连接是否有效的超时时间。底层调用 jdbc Statement对象的 void setQueryTimeout(int seconds) 方法
testOnBorrowtrue申请连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能。
testOnReturnfalse归还连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能。
testWhileIdlefalse建议配置为 true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于 timeBetweenEvictionRunsMillis,执行validationQuery 检测连接是否有效。
keepAlivefalse
(1.0.28)
连接池中的 minIdle 数量以内的连接,空闲时间超过 minEvictableIdleTimeMillis,则会执行 keepAlive 操作。
timeBetweenEvictionRunsMillis1分钟(1.0.14)有两个含义:
1) Destroy 线程会检测连接的间隔时间,如果连接空闲时间大于等于 minEvictableIdleTimeMillis 则关闭物理连接。
2) testWhileIdle 的判断依据,详细看 testWhileIdle 属性的说明
numTestsPerEvictionRun30分钟(1.0.14)不再使用,一个 DruidDataSource 只支持一个 EvictionRun
minEvictableIdleTimeMillis 连接保持空闲而不被驱逐的最小时间
connectionInitSqls 物理连接初始化的时候执行的 sql
exceptionSorter根据dbType自动识别当数据库抛出一些不可恢复的异常时,抛弃连接
filters 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
监控统计用的 filter:stat
日志用的 filter:log4j
防御 sql 注入的 filter:wall
proxyFilters 类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了 filters 和 proxyFilters,是组合关系,并非替换关系

2、使用

2.1、直接使用

2.1.1、引入依赖
<dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.2.8</version></dependency>
2.1.2、使用例子
package com.abc.demo.general.dbpool;import com.alibaba.druid.pool.DruidDataSource;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DruidCase {    public static void main(String[] args) {        DruidDataSource druidDataSource = new DruidDataSource();        Connection connection = null;        try {            druidDataSource.setName("测试连接池");            druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");            druidDataSource.setUrl("jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8");            druidDataSource.setUsername("root");            druidDataSource.setPassword("123456");            druidDataSource.setInitialSize(2);            druidDataSource.setMinIdle(2);            druidDataSource.setMaxActive(5);            druidDataSource.setValidationQuery("select 1");            druidDataSource.setTestWhileIdle(true);            druidDataSource.setTestOnBorrow(true);            druidDataSource.setTestOnReturn(false);            druidDataSource.setMaxWait(6000);            druidDataSource.setFilters("slf4j");            connection = druidDataSource.getConnection();            Statement st = connection.createStatement();            ResultSet rs = st.executeQuery("select version()");            if (rs.next()) {                System.out.println(rs.getString(1));            }        } catch (SQLException e) {            e.printStackTrace();        } finally {            close(connection);        }        //实际使用中一般是在应用启动时初始化数据源,应用从数据源中获取连接;并不会关闭数据源。        druidDataSource.close();    }    private static void close(Connection connection) {        if (connection != null) {            try {                connection.close();            } catch (SQLException e) {                e.printStackTrace();            }        }    }}

2.2、在 SpringBoot 中使用

2.1.1、引入依赖
<parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>2.3.12.RELEASE</version>    <relativePath /></parent><dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-jdbc</artifactId>    </dependency>    <dependency>        <groupId>com.alibaba</groupId>        <artifactId>druid-spring-boot-starter</artifactId>        <version>1.2.8</version>    </dependency>    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>    </dependency></dependencies>
2.1.2、单数据源

application.yml 配置:

spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8    username: root    password: 123456    type: com.alibaba.druid.pool.DruidDataSource    druid:      initial-size: 2      min-idle: 2      max-active: 5      validation-query: select 1      test-while-idle: true      test-on-borrow: true      test-on-return: false      max-wait: 6000      filter: slf4j

使用:

@Autowiredprivate DataSource dataSource;
2.1.3、多数据源

application.yml 配置:

spring:  datasource:    druid:      db1:        driver-class-name: com.mysql.cj.jdbc.Driver        url: jdbc:mysql://10.140.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8        username: root        password: 123456        initial-size: 2        min-idle: 2        max-active: 5        validation-query: select 1        test-while-idle: true        test-on-borrow: true        test-on-return: false        max-wait: 6000        filter: slf4j      db2:        driver-class-name: com.mysql.cj.jdbc.Driver        url: jdbc:mysql://10.40.9.12:3306/mydb?useUnicode=true&characterEncoding=UTF-8        username: root        password: 123456        initial-size: 2        min-idle: 2        max-active: 5        validation-query: select 1        test-while-idle: true        test-on-borrow: true        test-on-return: false        max-wait: 6000        filter: slf4j

数据源配置类:

package com.abc.demo.config;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import javax.sql.DataSource;@Configurationpublic class DataSourceConfig {    @Primary    @Bean("dataSource1")    @ConfigurationProperties("spring.datasource.druid.db1")    public DataSource dataSourceOne(){        return DruidDataSourceBuilder.create().build();    }    @Bean("dataSource2")    @ConfigurationProperties("spring.datasource.druid.db2")    public DataSource dataSourceTwo(){        return DruidDataSourceBuilder.create().build();    }}

使用:

@Autowired@Qualifier("dataSource1")private DataSource dataSource1;@Autowired@Qualifier("dataSource2")private DataSource dataSource2;
2.1.4、开启监控功能

Druid 内置了一些监控,Spring Boot 环境下通过少量配置就可开启这些功能。

application.yml 配置:

spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8    username: root    password: InsYR0ot187!    type: com.alibaba.druid.pool.DruidDataSource    druid:      initial-size: 2      min-idle: 2      max-active: 5      validation-query: select 1      test-while-idle: true      test-on-borrow: true      test-on-return: false      max-wait: 6000      filter: slf4j,stat,wall #启用日志、监控统计、防火墙功能      web-stat-filter:    #web监控配置        enabled: true      stat-view-servlet:  #监控页面配置        enabled: true        url-pattern: /druid/*

监控页面:

Java数据库连接池Druid的配置参数有哪些

到此,关于“Java数据库连接池Druid的配置参数有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java数据库连接池Druid的配置参数有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java数据库连接池Druid的配置参数有哪些

这篇文章主要介绍“Java数据库连接池Druid的配置参数有哪些”,在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据库连接池D
2023-06-25

使用druid如何实现配置数据库连接池

本篇文章为大家展示了使用druid如何实现配置数据库连接池 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。druid的配置项如下配置缺省值说明name 配置这个属性的意义在于,如果存在多个数据源,监
2023-05-31

Java项目中有哪些常用的数据库连接池

Java项目中有哪些常用的数据库连接池?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。定义数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出
2023-05-31

sqlite数据库连接池怎么配置

在SQLite中,由于它是一个嵌入式数据库,通常不需要使用连接池来管理数据库连接。每个数据库连接都是一个文件,可以直接在应用程序中打开和关闭。如果你想要实现一个类似连接池的功能,可以在应用程序中手动管理连接的打开和关闭,以避免频繁地打开和
sqlite数据库连接池怎么配置
2024-04-09

c3p0数据库连接池配置总结

C3P0是一个开源的数据库连接池,可以用于在Java应用程序中管理数据库连接。下面是C3P0数据库连接池的配置总结:1. 配置数据源:```javaComboPooledDataSource dataSource = new ComboPo
2023-10-12

oracle数据库连接池怎么配置

在Oracle数据库中,连接池是用于管理数据库连接的重要组件,它可以提高应用程序的性能和可伸缩性。以下是配置Oracle数据库连接池的一般步骤:创建连接池用户:首先,在Oracle数据库中创建一个专门用于连接池的用户,并为其授予适当的权限。
oracle数据库连接池怎么配置
2024-03-12

sqlserver数据库连接池怎么配置

在SQL Server中,连接池的配置是通过连接字符串来实现的。以下是一些常用的连接池配置选项:Pooling=True:启用连接池,默认值为 True。Max Pool Size:连接池中允许的最大连接数。默认值为 100。Min Poo
sqlserver数据库连接池怎么配置
2024-04-09

如何为 Golang 数据库连接配置连接池?

如何为 go 数据库连接配置连接池?使用 database/sql 包中的 db 类型创建数据库连接;设置 maxopenconns 以控制最大并发连接数;设置 maxidleconns 以设定最大空闲连接数;设置 connmaxlifet
如何为 Golang 数据库连接配置连接池?
2024-05-14

Oracle数据库ODBC连接参数配置详解

在Oracle数据库中,使用ODBC(Open Database Connectivity)进行连接需要配置一些参数,以下是一些常见的参数及其详细说明:DSN(Data Source Name):这是一个标识数据源的名称,使用ODBC连接时
Oracle数据库ODBC连接参数配置详解
2024-07-15

Go语言配置数据库连接池的实现

目录配置连接池SetMaxOpenConns方法SetMaxIdleConns方法SetConnMaxLifetime方法SetConnMaxIdleTime方法实操一波配置连接池开始本文之前,我们看一段Go连接数据库的代码://openD
2022-06-07

SSM项目下Druid连接池的配置及数据源监控的使用

一,连接池的配置在pom.xml中添加,druid的maven信息 com.alibaba druid 1.1.21数据源设置:要在init-method设置init方法,才能在监控页面中查看数据源等操作
SSM项目下Druid连接池的配置及数据源监控的使用
2014-05-08

c3p0数据库连接池如何进行配置

这篇文章将为大家详细讲解有关c3p0数据库连接池如何进行配置,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。c3p0的配置方式分为三种,分别是1.setters一个个地设置各个配置项2.类路径
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录