返回顶部
首页 > 资讯 > 精选 >Java数据库连接池Druid的配置参数有哪些
  • 110
分享到

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

2023-06-25 17:06:47 110人浏览 独家记忆
摘要

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

这篇文章主要介绍“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的配置参数有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Java数据库连接池Druid的配置参数有哪些

本文链接: https://lsjlt.com/news/306274.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java数据库连接池Druid的配置参数有哪些
    这篇文章主要介绍“Java数据库连接池Druid的配置参数有哪些”,在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据库连接池D...
    99+
    2023-06-25
  • 数据库连接池druid参数详解
    spring: datasource: druid: # 指定数据源类型为DruidDataSource type: com.alibaba.druid.pool.DruidDataSource # 数...
    99+
    2023-09-02
    数据库 java mybatis
  • Java 数据库连接池Druid 的介绍
    目录1、配置参数2、使用2.1、直接使用2.1.1、引入依赖2.1.2、使用例子2.2、在 SpringBoot 中使用2.1.1、引入依赖2.1.2、单数据源2.1.3、多数据源2...
    99+
    2024-04-02
  • 使用druid如何实现配置数据库连接池
    本篇文章为大家展示了使用druid如何实现配置数据库连接池 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。druid的配置项如下配置缺省值说明name 配置这个属性的意义在于,如果存在多个...
    99+
    2023-05-31
    数据库连接池 druid
  • 2020.05.28 数据库连接池 C3P0 Druid JDBCTemplate
    今日内容 1. 数据库连接池 2. Spring JDBC : JDBC Template 数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,...
    99+
    2018-09-05
    2020.05.28 数据库连接池 C3P0 Druid JDBCTemplate
  • 数据库连接池(Druid(德鲁伊))
    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤 在主程序(如servlet、beans)中建立数据库连接 进行sql操作 断开数据库连接   这种模式开发,存在的问题: 普通的JDBC数据库连...
    99+
    2023-09-14
    数据库 java sql
  • spring cloud 配置阿里数据库连接池 druid的示例代码
    1.配置pom <!-- druid 数据库连接池 --> <dependency> <groupId>com.alibaba...
    99+
    2024-04-02
  • Druid数据库连接池如何使用
    这篇文章主要介绍了Druid数据库连接池如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Druid数据库连接池如何使用文章都会有所收获,下面我们一起来看看吧。概述数据库连接池是个容器,负责分配、管理数据库...
    99+
    2023-07-05
  • Java实现数据连接池Druid举例
    目录开篇Druid的调试参考开篇 Druid号称是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。作为日常使用较多的数据库连接组件,纯粹个人兴趣研究下理解下的实现...
    99+
    2024-04-02
  • 数据库连接池如何配置
    这篇文章将为大家详细讲解有关数据库连接池如何配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、连接池配置1.1 maxWait参数表示从连接池获取连接的超时等待时间,...
    99+
    2024-04-02
  • Java项目中有哪些常用的数据库连接池
    Java项目中有哪些常用的数据库连接池?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。定义数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出...
    99+
    2023-05-31
    java 数据库连接池 中有
  • Tomcat 5.5 配置 MySQL 数据库连接池
    Tomcat 5.5 配置 MySQL 数据库连接池[@more@]1 环境描述  JDK 1.5  Tomcat 5.5.4  MySQL 4.0.20  MySQL JDBC 3.0.15  Commo...
    99+
    2024-04-02
  • 怎么配置mysql数据库连接池
    配置mysql数据库连接池的方法在CATALINA_HOME/conf/server.xml中添加如下配置信息;<!--声明连接池-->    <Resource name="jdbc/mysql&qu...
    99+
    2024-04-02
  • c3p0数据库连接池配置总结
    C3P0是一个开源的数据库连接池,可以用于在Java应用程序中管理数据库连接。下面是C3P0数据库连接池的配置总结:1. 配置数据源...
    99+
    2023-10-12
    数据库
  • sqlite数据库连接池怎么配置
    在SQLite中,由于它是一个嵌入式数据库,通常不需要使用连接池来管理数据库连接。每个数据库连接都是一个文件,可以直接在应用程序中打...
    99+
    2024-04-09
    sqlite
  • sqlserver数据库连接池怎么配置
    在SQL Server中,连接池的配置是通过连接字符串来实现的。以下是一些常用的连接池配置选项: Pooling=True:启用...
    99+
    2024-04-09
    sqlserver
  • oracle数据库连接池怎么配置
    在Oracle数据库中,连接池是用于管理数据库连接的重要组件,它可以提高应用程序的性能和可伸缩性。以下是配置Oracle数据库连接池...
    99+
    2024-03-12
    oracle
  • 初识数据库连接池开源框架Druid
    Druid是阿里巴巴的一个数据库连接池开源框架,准确来说它不仅仅包括数据库连接池这么简单,它还提供强大的监控和扩展功能。本文仅仅是在不采用Spring框架对Druid的窥探,采用目前最新版本druid1.0...
    99+
    2024-04-02
  • 数据库连接池Druid与Hikari对比详解
    目录Druid竞品对比Hikari 官方性能测试数据对比总结Druid竞品对比 功能类别功能DruidHikariCPDBCPTomcat-jdbcC3P0性能PSCache是否是是是LRU是否是是是SLB负载均衡支持...
    99+
    2023-02-02
    数据库连接池选DruidHikar 数据库连接池
  • 如何为 Golang 数据库连接配置连接池?
    如何为 go 数据库连接配置连接池?使用 database/sql 包中的 db 类型创建数据库连接;设置 maxopenconns 以控制最大并发连接数;设置 maxidleconns...
    99+
    2024-05-14
    golang 数据库连接池 mysql git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作