我应该在数据库连接字符串中设置最大池大小吗?如果我不这样做会怎样?
Posted
技术标签:
【中文标题】我应该在数据库连接字符串中设置最大池大小吗?如果我不这样做会怎样?【英文标题】:Should I set max pool size in database connection string? What happens if I don't? 【发布时间】:2011-12-08 16:55:18 【问题描述】:这是我的数据库连接字符串。直到现在我才设置最大池大小。
public static string srConnectionString =
"server=localhost;database=mydb;uid=sa;pwd=mypw;";
那么目前我的应用程序支持多少个连接?增加连接池大小的正确语法是什么?
应用程序是用 C# 4.0 编写的。
【问题讨论】:
如果您没有问题,请将其保留为默认值。 目前是,但我认为这可能会在高峰时刻引起问题。所以我更喜欢设置高于默认值。我读到默认是 100 我对吗? 默认连接池大小 100 由 Microsoft 在docs.microsoft.com/en-us/dotnet/framework/data/adonet/… 和可能的其他地方记录。 【参考方案1】:对于 Spring yml 配置:
spring:
datasource:
url: $DB-URL
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: $DB-USERNAME
password: $DB-PASSWORD
hikari:
auto-commit: true
maximum-pool-size: 200
或
application-prod.properties 文件:
spring.datasource.hikari.maximum-pool-size=200
【讨论】:
【参考方案2】:我们可以通过以下方式定义最大池大小:
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>200</max-pool-size>
<prefill>true</prefill>
<use-strict-min>true</use-strict-min>
<flush-strategy>IdleConnections</flush-strategy>
</pool>
【讨论】:
这是什么文件? 不清楚这是什么文件,如果是webconfig那么我们应该在哪里添加这个“目前是,但我认为它可能会在高峰时刻引起问题” 我可以确认,我遇到了由于峰值请求而导致超时的问题。设置最大池大小后,应用程序运行没有任何问题。 IIS 7.5 / ASP.Net
【讨论】:
这不是答案【参考方案4】:目前您的应用程序支持池中的 100 个连接。如果要将 conn 字符串增加到 200,则如下所示:
public static string srConnectionString =
"server=localhost;database=mydb;uid=sa;pwd=mypw;Max Pool Size=200;";
您可以通过在数据库中执行sp_who
过程来调查您的应用程序使用了多少与数据库的连接。在大多数情况下,默认连接池大小就足够了。
【讨论】:
除了通过连接字符串设置最大和最小池大小之外,还有其他方法吗?我宁愿用代码来做...... 将“最大池大小”设置为 30 时会发生什么。当所有插槽都充满“使用中”和“空闲连接”时,空闲连接会自动关闭以使新连接的空间? @Pierre - 您将收到类似于以下内容的错误:System.InvalidOperationException: Timeout expired。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小。在 System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) 在 System.Data.SqlClient.SqlConnection.Open() 默认情况下100个连接的参考是什么? 文档文章 SQL Server 连接池 (ADO.NET) 的“添加连接”部分的第一段指出 100 是默认的最大池大小。 (docs.microsoft.com/en-us/dotnet/framework/data/adonet/…) 见 2019-09-14以上是关于我应该在数据库连接字符串中设置最大池大小吗?如果我不这样做会怎样?的主要内容,如果未能解决你的问题,请参考以下文章