Springboot使用数据库连接池druid

springboot框架中可以使用druid进行数据库连接池,下面介绍druid在springboot中使用和参数配置介绍。

数据库连接池(Druid)是一种用于管理数据库连接的机制,其工作原理和常见使用方法如下:

  1. 原理:数据库连接池通过预先建立一定数量的数据库连接,并在程序需要时重复使用这些已存在的连接,而不是每次都新建一个,从而避免了频繁创建和销毁数据库连接带来的开销。这种技术可以显著提高系统的响应速度并减少资源消耗。连接池中的连接数量通常由最大连接数和最小连接数来控制,以达到最佳的性能和资源利用率。
  2. 使用步骤:
  • 定义配置文件:首先,需要定义Druid的配置文件,例如druid.properties,在其中配置数据库的相关信息,如URL、用户名、密码等。
  • 编程实例:在代码中实例化Druid数据源,然后通过这个数据源获取数据库连接。
  • 自定义JDBC工具类:创建一个工具类来封装数据库连接的获取和释放操作,以便在程序中重复使用。
  1. 配置参数:Druid连接池提供了丰富的配置参数,包括最大连接数、最小连接数、空闲连接的保持时间等,以便根据实际需求进行优化。
  2. 常见问题:在使用过程中,可能遇到一些问题,如连接泄漏、SQL注入等,需要注意防范和解决。

总之,数据库连接池技术是提高系统性能和资源利用率的重要手段,Druid作为其中的一种实现,提供了丰富的功能和灵活的配置选项。在使用过程中,需要注意配置和优化,并根据具体情况选择合适的连接池大小和保持策略。

在springboot中的使用

1、maven中引入依赖

<dependency> <groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version>
</dependency> 

2、druid配置项和解析

spring:datasource:druid:# 指定数据源类型为DruidDataSourcetype: com.alibaba.druid.pool.DruidDataSource# 数据库连接URLurl: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false# 数据库用户名username: root# 数据库密码password: "xx123!@#"# 连接池初始化时创建的连接数initialSize: 5# 连接池中最大连接数maxActive: 50# 连接池中最小空闲连接数minIdle: 5# 连接池中最大空闲连接数maxIdle: 10# 获取连接时的最大等待时间(毫秒)maxWait: 60000# 间隔多久检测一次空闲连接(毫秒)timeBetweenEvictionRunsMillis: 60000# 连接池中连接最小空闲时间(毫秒)minEvictableIdleTimeMillis: 300000# 用于检测连接是否有效的SQL语句validationQuery: SELECT 1# 是否开启空闲连接的检测testWhileIdle: true# 是否开启连接的检测功能,在获取连接时检测连接是否有效testOnBorrow: false# 是否开启连接的检测功能,在归还连接时检测连接是否有效testOnReturn: false# 是否缓存PreparedStatement对象poolPreparedStatements: true# 缓存PreparedStatement对象的最大数量maxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计用的filter,允许监控统计filters: stat# 配置扩展属性,用于监控统计分析SQL性能等

2、url: 数据库连接的URL。

注意事项:需要根据实际情况修改URL。

3、username: 数据库用户名。

4、password: 数据库密码

包含一些特殊字符的时候需要加引号。

5、initialSize: 连接池初始化时创建的连接数。

需要根据实际情况设置连接数。连接池创建连接时,会创建initialSize个连接,以确保应用程序在启动时可以立即获取到数据库连接。

6. maxActive: 连接池中最大连接数。需要根据实际情况设置最大连接数。如果连接池中连接数达到maxActive,则应用程序获取连接的请求将被阻塞,直到有连接被释放。

7. minIdle: 连接池中最小空闲连接数。 需要根据实际情况设置最小空闲连接数。如果连接池中空闲连接数少于minIdle,连接池会创建新的连接以达到minIdle。

8. maxIdle: 连接池中最大空闲连接数。 需要根据实际情况设置最大空闲连接数。如果连接池中空闲连接数超过maxIdle,连接池会关闭多余的连接以避免占用过多的资源。

9. maxWait: 获取连接时的最大等待时间。需要根据实际情况设置最大等待时间。如果连接池中没有可用连接且已经达到最大连接数,则应用程序获取连接的请求将被阻塞,最多等待maxWait毫秒。

10. timeBetweenEvictionRunsMillis: 间隔多久检测一次空闲连接(毫秒)。 需要根据实际情况设置检测间隔时间。连接池会定期检查空闲连接的状态,如果空闲时间超过minEvictableIdleTimeMillis,则将连接关闭。

11. minEvictableIdleTimeMillis: 连接池中连接最小空闲时间(毫秒)。 需要根据实际情况设置最小空闲时间。连接池会定期检查空闲连接的状态,如果空闲时间超过minEvictableIdleTimeMillis,则将连接关闭。

12. validationQuery: 用于检测连接是否有效的SQL语句。 需要根据实际情况设置SQL语句。连接池会使用这个SQL语句来检测连接是否有效。

13. testWhileIdle: 是否开启空闲连接的检测。 需要根据实际情况设置是否开启空闲连接的检测。如果开启,连接池会定期检查空闲连接的状态。

14. testOnBorrow: 是否开启连接的检测功能,在获取连接时检测连接是否有效。
需要根据实际情况设置是否开启连接的检测功能。如果开启,连接池在获取连接时会检查连接是否有效。

15. testOnReturn: 是否开启连接的检测功能,在归还连接时检测连接是否有效。 需要根据实际情况设置是否开启连接的检测功能。如果开启,连接池在归还连接时会检查连接是否有效。

16. poolPreparedStatements: 是否缓存PreparedStatement对象。需要根据实际情况设置是否缓存PreparedStatement对象。如果开启,连接池会缓存PreparedStatement对象以提高性能。

17. maxPoolPreparedStatementPerConnectionSize: 缓存PreparedStatement对象的最大数量。 需要根据实际情况设置缓存的最大数量。如果开启了缓存PreparedStatement对象,连接池会限制每个连接缓存的最大数量。

maxPoolPreparedStatementPerConnectionSize是Druid连接池的一个配置项,用于配置连接池中缓存的PreparedStatement的最大数量。PreparedStatement是预编译的SQL语句,可以提高SQL执行的效率和安全性,避免SQL注入等安全问题。在使用Druid连接池时,当开启了缓存PreparedStatement功能时,每个连接都会缓存一定数量的PreparedStatement对象,以便在需要执行SQL语句时能够快速获取。而maxPoolPreparedStatementPerConnectionSize就是用于配置每个连接中缓存的PreparedStatement的最大数量。需要注意的是,缓存PreparedStatement虽然可以提高SQL执行的效率,但同时也会占用一定的内存资源。因此,需要根据实际情况进行合理配置。默认情况下,该属性的值为10。在上面的配置中,maxPoolPreparedStatementPerConnectionSize: 20表示将每个连接中缓存的PreparedStatement的最大数量设置为20个。

18. filters: 配置监控统计用的filter,允许监控统计。 如果要使用Druid的监控功能,需要配置此项。stat表示使用Druid的监控功能。

19. connectionProperties: 配置扩展属性,用于监控统计分析SQL性能等。 druid.stat.mergeSql和druid.stat.slowSqlMillis是两个与SQL监控有关的属性。
druid.stat.mergeSql用于配置是否合并SQL。当该属性设置为true时,Druid会将相同的SQL语句合并为一条,以节省SQL统计的开销和提高统计精度。默认情况下,该属性的值为false。
druid.stat.slowSqlMillis用于配置SQL执行的时间阈值,单位为毫秒。当一条SQL执行的时间超过该阈值时,Druid会将该SQL记录到慢SQL列表中,以便进行分析和优化。默认情况下,该属性的值为3000毫秒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/439196.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

awk命令使用方法

简介 awk 是一种强大的文本处理工具&#xff0c;可以用于处理结构化的文本数据。它可以根据指定的模式和动作来筛选、处理和格式化文本。 下面是一些常见的 awk 命令使用方法。 详细介绍 基本语法&#xff1a; awk pattern { action } filename其中&#xff0c;pattern 是用…

短视频界的变革者:上海 AI lab 发布 Vlogger,几句话生成分钟级视频

现如今&#xff0c;vlog 已经成为我们日常生活的重要组成部分。无论是看视频学习休闲、记录珍贵瞬间还是分享生活见闻&#xff0c;视频已经成为人们表达创意和观点的独特媒介。 然而&#xff0c;与几秒钟的短视频不同&#xff0c;要创作出引人入胜、生动有趣的长视频&#xff…

微信积分系统怎么做_开启用户忠诚度之门

积分系统&#xff1a;开启用户忠诚度之门 在数字化时代&#xff0c;积分系统已经成为了企业与消费者之间互动的桥梁。它不仅是一种奖励机制&#xff0c;更是提升用户忠诚度、促进消费的重要手段。本文将深入探讨如何将积分系统作为主题&#xff0c;撰写一篇高质量的营销软文&a…

数据结构--顺序表的基本操作[王道]

截图来自王道数据结构公开课 目录 1.插入操作 代码 时间复杂度分析 2.删除操作 代码 时间复杂度分析 3.按值寻找(顺序查找) 代码 时间复杂度 4.按位寻找(按序号查找) 代码 快速回顾顺序表的定义以及特点&#xff1a;数据结构-顺序表的实现 [王道]-CSDN博客 本篇博…

二、防御保护---防火墙基础知识篇

二、防御保护---防火墙基础知识篇 一、什么是防火墙二、防火墙的发展史1.包过滤防火墙(一个严格的规则表)2.应用代理防火墙(每个应用添加代理)3.状态检测防火墙(首次检查建立会话表)3.入侵检测系统(IDS)-----网络摄像头4.入侵防御系统(IPS)-----抵御2-7层已知威胁5.防病毒网关(…

Unity中使用Ultraleap的InteractionButton组件

本节在上一节基础上进行&#xff0c;上一小结参考如下&#xff1a; Unity中创建Ultraleap 3Di交互项目 本节工程文件如下&#xff1a; Unity中使用Ultraleap的InteractionButton组件 本节结构有所更改&#xff0c;主要是参考官方示例结构进行重新调整&#xff0c;和上一小节相…

wordpress找不回密码怎么办?4种方法设置新密码

有些WordPress站长太久不登录后台了&#xff0c;所以就忘记了管理员登录密码&#xff0c;这种情况我们应该怎么找回密码呢&#xff1f;或者设置一个新密码呢&#xff1f;下面boke112百科就跟大家分享4种方法设置WordPress新密码。 方法一、登录页面的“忘记密码&#xff1f;”…

Shell中正则表达式

1.正则表达式介绍 1、正则表达式---通常用于判断语句中&#xff0c;用来检查某一字符串是否满足某一格式 2、正则表达式是由普通字符与元字符组成 3、普通字符包括大小写字母、数字、标点符号及一些其他符号 4、元字符是指在正则表达式中具有特殊意义的专用字符&#xff0c…

Hack The Box-Pov

信息收集&端口利用 先使用nmap对主机进行端口扫描 nmap 10.10.11.251只开放了80端口 访问网站后发现没有什么功能点,尝试目录扫描 并没有什么能够利用的点 使用gobuster进行子域名扫描 gobuster dns -d pov.htb -w /usr/share/wordlists/seclists/Discovery/DNS/subdo…

Vue之初识Vue CLI 脚手架

Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处&#xff1f; 1.开箱即用&#xff0c;零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …

自然语言处理(NLP)技术使用

自然语言处理&#xff08;NLP&#xff09;技术使用 以下是一些自然语言处理&#xff08;NLP&#xff09;技术的例子&#xff1a;以上只是一些NLP技术的例子&#xff0c;还有许多其他的技术和应用&#xff0c;如文本分类、文本生成、问答系统等。NLP技术的发展正逐渐改变人们与计…

LeetCode.209. 长度最小的子数组

题目 题目链接 分析 本题的题意就是让我们找最短的子数组和 > target 的子数组的长度。 首先最能想到的就是暴力方法&#xff0c;外层循环以数组每一个元素都作为起点&#xff0c;内存循环累加元素&#xff0c;当大于等于 target 的时候记录当前元素个数&#xff0c;更新…