我有两个使用相同2个数据库的应用程序。 1个应用程序运行良好,没有性能问题。当我运行下面的查询时,每个数据库获得1个连接。他们保持开放一段时间。因此,当我浏览它时,似乎重用了这两个连接。过了一会儿他们就闭上了。
当我运行第二个应用程序时,连接打开并立即关闭。我注意到,当我运行下面的查询时,页面刷新时连接数的值会增加,并且一旦页面完成加载,连接数就会减少。
我将此添加到连接字符串:
Max Pool Size=75;Min Pool Size=5;
但是现在连接数从0跳到5然后再跳回到0
这导致应用程序非常慢,因为某些页面中包含许多查询。
任何有关解决此问题的帮助都将不胜感激。
查询:
SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame
答案 0 :(得分:0)
@ User1253073 - >从最佳实践角度来看,您应该仅在需要时打开和关闭两个应用程序的连接。类似于:a)打开连接,执行查询并在断开连接时将结果加载到DataSet中b)关闭连接并执行操作以操作DataSet结果。 c)继续编码。这种方法可以减少与数据库的活动连接数,而无需提高应用程序性能。
答案 1 :(得分:0)
答案 2 :(得分:0)
我有同样的问题。我在用C#编写的.NET Windows服务中不断地对SQL Server 2008数据库进行一些密集更新:一分钟内大约有100k个查询。
通常,池中打开的连接数是最大值:200。每周,在大约一小时内,池中的连接会在每个命令后立即关闭,并在需要执行某些新命令时重新打开。它大大减慢了服务速度。
我尝试更改池的最小和最大尺寸,但它不会改变任何东西。问题不可能轻易复制:它只是每周发生一次。目前,我们还没有找到任何方法来确定谁决定关闭连接:.NET池或SQL服务器。