sql连接优化[关闭]

Posted

技术标签:

【中文标题】sql连接优化[关闭]【英文标题】:sql connection optimization [closed] 【发布时间】:2017-09-16 06:54:15 【问题描述】:

我有两个关于在 c# 中使用 sql server 2008 的问题。

问题1:c#中连接sql server 2005的同时查询数是多少?

我的连接字符串是:

Data Source = localhost;database=TaskQueue;Persist Security Info=True;integrated security=SSPI; MultipleActiveResultSets=true; Connection Timeout=0;Pooling=false;

问题 2:连接的生产寿命是多少?我想在运行应用程序的最后保持打开一个全局连接并仅用于此连接。 这种方法有问题吗?

【问题讨论】:

你可以查看这个案例***.com/questions/1499718/… 要回答第 2 部分,请参阅:msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx 基本上,您希望您的连接尽可能短,以便它们可以返回到框架已经提供的池中。 【参考方案1】:

c#中连接sql server 2005的同时查询数是多少?

SQL Server 2005 Standard Edition 最多可支持 32,767 个同时连接。

什么是连接的生产寿命?我想在运行应用程序的最后保持打开一个全局连接并仅用于此连接。这种方法有问题吗?

SQL Server 充分利用了connection pooling,因此您通常希望将连接保持在短暂的状态,以便在使用后将它们返回到pool。

因此,请考虑将您的 SQL 调用包装在 using 语句中,以确保它们被打开、执行和正确处理,而不是使用保持打开状态的全局连接:

using (var connection = new SqlConnection("your-connection-string"))

     // Do stuff

检查您的连接字符串

值得注意的是,您现有的连接字符串已明确禁用池,这将不允许您利用内置连接池:

Data Source = ...; Pooling=false;

我强烈建议您重新启用此功能,除非您完全知道自己在做什么,否则您可能会遇到一些意外行为、孤立连接等。

【讨论】:

当不使用 Pooling=false;错误传递 : timeout expired 从池中获取连接之前经过的超时时间 我使用 using (var connection = new SqlConnection("your-connection-string")) // Do stuff 但传递了错误

以上是关于sql连接优化[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助来优化 ORACLE SQL 查询 [关闭]

如何使用许多连接优化慢查询[关闭]

Microsoft SQL Server 查询连接数和关闭连接数

ASP.NET比较常用的26个性能优化技巧

SQL执行与优化

百万级数据插入的优化