当前位置:网站首页>数据库连接池的使用
数据库连接池的使用
2022-07-30 06:41:00 【鲨鱼辣椒的小地摊儿】

数据库连接池的使用
1. Java连接数据库
数据库连接四步走:
- 注册驱动
- 获取链接
- 拿到statement,执行sql
- 处理结果
java连接数据库是通过JDBC技术,JDBC的全称是Java DataBase Connectivity,事实上,JDBC并不能直接访问数据库的,必须依赖于数据库厂商提供的驱动程序。
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "root");
//拿到statement
Statement state=conn.createStatement();
//执行sql,处理结果
ResultSet rs=st.executeQuery("select * from tb_stu");
1.1 长短连接
短连接
- 所谓短连接就是指应用程序和数据库通信完毕之后连接关闭。
频繁的建立/释放连接增加了系统负担
应用程序每次操作数据库的过程将会变得很卡
释放的连接不会马上被执行,服务器端口资源被消耗完,table lock,如果每秒几千次请求,就会连接不上数据库connection timeout
长连接:
- 即在建立连接后一直打开,直到应用程序关闭才释放。使用长连接的好处是减少每次创建连接带来的开销。
对于数据库服务器来说,过多的长连接则是灾难。
2. 连接池
Hikari是一款非常强大,高效,并且号称“史上最快连接池”。由于其性能方面比较好,并且在springboot2.0之后,采用的默认数据库连接池就是Hikari,在引用parents后不用专门再添加依赖。
2.1 performance
hikariCP > druid > tomcat-jdbc > dbcp > c3p0
2.2 application.yml
前面说了,springboot2.0以后默认使用Hikari,配置信息如下:
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/ssm
spring.datasource.username = root
spring.datasource.password = root
Hikari git website: https://github.com/brettwooldridge/HikariCP.
- 最小空闲连接数量
spring.datasource.hikari.minimum-idle=5- 空闲连接存活最大时间,默认600000(10分钟)
spring.datasource.hikari.idle-timeout=180000- 连接池最大连接数,默认是10
spring.datasource.hikari.maximum-pool-size=10- 连接池名称
spring.datasource.hikari.pool-name=MyHikariCP- 池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
spring.datasource.hikari.max-lifetime=1800000- 数据库连接超时时间,默认30秒,即30000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
spring:
datasource:
#账号配置
url: jdbc:mysql://127.0.0.1:3306/xxxxx
username: xxxxx
password: xxxxx
driver-class-name: com.mysql.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
#hikari数据库连接池
hikari:
pool-name: MyHikariCP
minimum-idle: 5 #最小空闲连接数量
idle-timeout: 180000 #空闲连接存活最大时间,默认600000(10分钟)
maximum-pool-size: 10 #连接池最大连接数,默认是10
auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true
max-lifetime: 1800000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
connection-timeout: 30000 #数据库连接超时时间,默认30秒,即30000
connection-test-query: SELECT 1
3. Mysql
MYSQL 的最大连接数在5.7版本中默认是151, 最大可以达到16384(2^14)
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 5050 |
+-----------------+-------+
1 row in set (0.00 sec)
- 设置最大连接数
set GLOBAL max_connections=100;- 修改配置文件
vim /etc/my.cnf
max_connections=100
sudo systemctl start mysqld.service
4. Oracle
Oracle的连接数默认是150
- 查看当前连接数
select count(*) from v$process;- 查询最大连接数
show parameter processes;- 修改最大连接数(上面报警就执行下面的)
alter system set processes = 600 scope = both;
alter system set processes = 300 scope = spfile;
5. Sqlserver(mssql)
默认值为:0,即无限制。
- 查看当前连接数
select count(distinct(login_time)) from sys.sysprocesses ;- 查询最大连接数
SELECT value_in_use FROM sys.configurations c WHERE c.name = ‘user connections’;- 修改最大连接数
exec sp_configure ‘show advanced options’, 1
GO
exec sp_configure ‘user connections’, 300
GO
RECONFIGURE WITH OVERRIDE
GO
边栏推荐
- 架构设计指南 如何成为架构师
- Delphi仿制Web的导航
- Selected as one of the "Top Ten Hard Core Technologies", explaining the technical points of Trusted Confidential Computing (TECC) in detail
- 42.【vector简单列题】
- 使用navicat连接mysql数据库时常报的错误:2003、1698、1251
- Burpsuite几种爆破方式
- Go uses the mencached cache
- C# 使用RestSharp 实现Get,Post 请求(2)
- go : 使用gorm修改数据
- Keil compile size and storage instructions
猜你喜欢
Keil软件中map文件解析
Get all interface paths and names in the controller
39.【vector动态数组定义及初始化】
bean的生命周期
五号黯区靶场 mysql 注入之limit注入记录
【雷达目标检测】恒定阈值法和恒虚警(CFAR)法及代码实现
Burpsuite几种爆破方式
Selected as one of the "Top Ten Hard Core Technologies", explaining the technical points of Trusted Confidential Computing (TECC) in detail
mysql高阶语句(一)
Handler消息机制-Native层
随机推荐
C# uses RestSharp to implement Get, Post requests (2)
ARM体系结构概述
golang: Gorm配置Mysql多数据源
02 多线程与高并发 - synchronized 解析
go : use gorm to modify data
Limit injection record of mysql injection in No. 5 dark area shooting range
assert
go : 使用gorm修改数据
Oracle查看表空间使用率及爆满解决方案
用代码收集每天热点内容信息,并发送到自己的邮箱
物联网网关该怎么选
Vue2进阶篇-编程式路由导航、缓存路由组件、路由的激活与失活
Develop common tool software
获取controller中所有接口路径和名称
谷粒商城--环境部署(2022/7/28最新)
【COCI 2020/2021 Round #2 D】Magneti (DP)
linux安装mysql8参考指引
go : 使用 grom 删除数据库数据
k8s 部署mysql8(PV和PVC 版本)
学生成绩管理系统(C语言)