当前位置:网站首页>数据库连接池的使用
数据库连接池的使用
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’, 1GOexec sp_configure ‘user connections’, 300GORECONFIGURE WITH OVERRIDEGO
边栏推荐
- 雷总个人博客看到
- 开创ETC生态建设新格局 JASMINER新一批X4服务器陆续发出
- 便携小风扇PD取电芯片
- 【防作弊】Unity防本地调时间作弊
- Go: go - redis based operation
- C# 使用RestSharp 实现Get,Post 请求(2)
- Fix datagrip connection sqlserver error: [08S01] The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.
- 一段神奇的没有主方法的代码
- Go uses the mencached cache
- 树状数组的基本用法
猜你喜欢
随机推荐
ETL为什么经常变成ELT甚至LET?
c语言变量的存储方式和生存期 -考察
【COCI 2020/2021 Round #2 D】Magneti(DP)
mysql URL链接
Go: go - redis based operation
go : 使用gorm查询记录
redis多节点部署实施指引
Go 结合Gin导出Mysql数据到Excel表格
golang : Zap log integration
ES:模板字符串的使用
Hex conversion...
Oracle查看表空间使用率及爆满解决方案
五号黯区靶场 mysql 注入之limit注入记录
【BERT-多标签文本分类实战】之二——BERT的地位与名词术语解释
K-Net:Towards Unified Image Segmentation,基于动态内核的通用分割网络,(NMS-free and Box-free),从语义/实例分割到全景分割。
C# uses RestSharp to implement Get, Post requests (2)
A magical no main method of code
IDEA search plug-in has no results and the solution has been spinning in circles
go : go-redis 基础操作
服务器可靠性稳定性调优指引








