需频繁访问数据库_数据库连接池等一系列问题

时间:2021-04-06 13:15:42
现在做的一个系统是数据库的连接是由池管理的,但是当大量用户并发时还是出现了连接不够用的情况(每用完一个连接即及时关闭),并且提供的连接数已经很多了(200个),主要好像是连接来不及释放又出现了新的连接请求就挂掉了。

现在想把连接数控制在一定的范围内,让数据库操作都同时只用几个连接,就是当每次来新的请求时我都给他几个同样的连接,不去申请新的物理连接,这样可以吗?

另外,多少个连接数到底是对性能来说比较好的呢?

10 个解决方案

#1


考虑换个容器或者连接池

#2


在关于数据库连接池的配置中,肯定可以做到,不过要看你用的是什么数据库,采用的是什么连接池了,这都有关系,关于连接的数量,就要根据具体情况来定,并且还需要在调试中最后确定!

#3


我已经试过了,感觉只用几个连接是完全可以的

#4


我也在做同样的连接池,可以交流一下

#5


楼上,你是说自己手工用代码写连接池吗

#6


数据库引擎里面应该有连接池的设置
不过你的情况,我想也可以用线程池。类似IIS这样的服务只需要发送数据,适合重复使用线程和数据库连接

#7


考虑用个中间表
怎么样

#8


但是连接复用就不能用于事务了,这一点不知道怎么解决

很想问一些,不知道商用的产品中数据库连接池是怎么实现的?是不是用一个池缓存连接?
但是这样如果大量用户并发请求时,一时拿不到连接是等待一下吗?还是其他的方法?

#9


连接复用不代表一个要求都给任意一个连接
应该是一个要求给一个连接用完返回,在这段时间是独占的。
所以也可以用事务
大量用户并发请求时,的确会有一时拿不到连接的情况,一般来说,首要的是估计多大的并发连接,来确定一共要多少个连接。
拿不到的话等待一段时间,超时就报错
反正我设置的都是十个左右连接。
其实主要省却了建立连接的开销,,这个很大的

#10


如果一时取不到连接,是会等待一段时间的(最大等待时间),如果可能,还有等待次数。

我自己写的连接池程序中就有等待时间和等待次数。所以
    最大等待时间 = 等待时间 * 等待次数
 之后如果还没有取到连接,就只好返回null。并记录日志中(以便于日后性能调优)。

#1


考虑换个容器或者连接池

#2


在关于数据库连接池的配置中,肯定可以做到,不过要看你用的是什么数据库,采用的是什么连接池了,这都有关系,关于连接的数量,就要根据具体情况来定,并且还需要在调试中最后确定!

#3


我已经试过了,感觉只用几个连接是完全可以的

#4


我也在做同样的连接池,可以交流一下

#5


楼上,你是说自己手工用代码写连接池吗

#6


数据库引擎里面应该有连接池的设置
不过你的情况,我想也可以用线程池。类似IIS这样的服务只需要发送数据,适合重复使用线程和数据库连接

#7


考虑用个中间表
怎么样

#8


但是连接复用就不能用于事务了,这一点不知道怎么解决

很想问一些,不知道商用的产品中数据库连接池是怎么实现的?是不是用一个池缓存连接?
但是这样如果大量用户并发请求时,一时拿不到连接是等待一下吗?还是其他的方法?

#9


连接复用不代表一个要求都给任意一个连接
应该是一个要求给一个连接用完返回,在这段时间是独占的。
所以也可以用事务
大量用户并发请求时,的确会有一时拿不到连接的情况,一般来说,首要的是估计多大的并发连接,来确定一共要多少个连接。
拿不到的话等待一段时间,超时就报错
反正我设置的都是十个左右连接。
其实主要省却了建立连接的开销,,这个很大的

#10


如果一时取不到连接,是会等待一段时间的(最大等待时间),如果可能,还有等待次数。

我自己写的连接池程序中就有等待时间和等待次数。所以
    最大等待时间 = 等待时间 * 等待次数
 之后如果还没有取到连接,就只好返回null。并记录日志中(以便于日后性能调优)。