当前位置: 首页 > news >正文

连接池-druid

原因:通过jdbc 创建Connection时比较耗费资源和时间,如果程序每次执行数据库操作都自己创建连接,项目不好控制连接数量,另外程序执行相对耗时。

市面上有很多厂商有连接池组件,目前比较出名的是alibaba druid 以及 Hikari ,本文讨论的是druid。

druid配置如下(通过properties文件方式):

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username=xxx
password=xxx
#初始连接池大小
initialSize=10
#最大连接池大小,建议和初始连接池大小设置一致
maxActive=10
#最大等待时间(毫秒)
maxWait=30000

配置建议:

1、初始连接池和最大连接池大小保持一致

2、项目设置最大连接池大小,可以考虑最大并发时刻的用户量,如最高并发时用户数是100,则最大连接池大小设置为100

3、当连接池没有空闲的连接可用时,新的请求需要用连接操作数据库时,需要等待,等待的时长就是maxWait的时间,等到连接则用连接继续执行,等不到系统抛出异常

示例:配置连接池类,在引入spring后,可以通过@Configuration 注解在项目启动后,初始化好连接池


import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;public class DruidConfig {/*** 获取数据源* @return* @throws Exception*/public static DataSource createDataSource() throws Exception {Properties properties = new Properties();InputStream inputStream = DruidConfig.class.getClassLoader().getResourceAsStream("druid-config.properties");properties.load(inputStream);inputStream.close();return DruidDataSourceFactory.createDataSource(properties);}public static void main(String[] args) throws Exception {DataSource dataSource = createDataSource();Connection connection = dataSource.getConnection();System.out.println(connection);}
}

通过debug发现,上述main方法执行到System那一行时,已经创建好了10个连接

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于yolov8的人脸检测计数系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 最新HTML5中的文件详解
  • 使用python批量计算栅格像元值(像元总值等)
  • vulhub spring 远程命令执行漏洞(CVE-2016-4977)
  • 【ArcGIS Pro第一期】界面简介
  • Python开发学习之Python和Excel的数据实现互通
  • Vue 向标签中传入 this
  • 【Linux】进程控制(一)
  • 简单实用的php全新实物商城系统
  • 使用Ansible进行自动化运维
  • 期货赫兹量化-种群优化算法:进化策略,(μ,λ)-ES 和 (μ+λ)-ES
  • Mysql-数据库课程设计图书管理系统
  • HTML5中canvas绘图基础详解
  • strlen函数模拟实现(嵌套函数调用)
  • Elasticsearch倒排索引
  • 【Leetcode】101. 对称二叉树
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • ES2017异步函数现已正式可用
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTML5新特性总结
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • js正则,这点儿就够用了
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • nfs客户端进程变D,延伸linux的lock
  • Promise面试题,控制异步流程
  • Shadow DOM 内部构造及如何构建独立组件
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端面试之CSS3新特性
  • 如何在GitHub上创建个人博客
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 学习ES6 变量的解构赋值
  • 学习JavaScript数据结构与算法 — 树
  • 一文看透浏览器架构
  • 找一份好的前端工作,起点很重要
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • !!java web学习笔记(一到五)
  • #数据结构 笔记三
  • (145)光线追踪距离场柔和阴影
  • (js)循环条件满足时终止循环
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (四)进入MySQL 【事务】
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)nsfocus-绿盟科技笔试题目
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 快速重构概要1
  • .Net的C#语言取月份数值对应的MonthName值
  • .Net面试题4
  • /bin/bash^M: bad interpreter: No such file ordirectory