保持SQL连接打开有哪些缺点?

8

这似乎是一个简单的问题,但我想知道不调用“close()”函数的缺点。

6个回答

10

迟早你会遇到“已达到最大连接限制”的错误。我认为这是一个很大的劣势。


7
除了耗尽连接池(大多数答案都是这样),你还有可能造成数据锁定的危险。
如果你正在读写表格,某些锁定语义将导致某些行被其他连接锁定。特别是如果你在连接上有任何开放的事务。
此时读写操作可能会失败,应用程序则会抛出异常。
简而言之,一定要关闭连接。

即使使用连接完成了SQL命令和行,仍然可以继续操作吗? - Thanos Papathanasiou
如果您有一个事务打开,那么是的。 - Oded
2
一个提交应该足以避免那个问题。 - Erich Kitzmueller
您需要提交所有嵌套的事务。 - Oded

1
连接池将会填满,任何新的连接都将超时等待来自池中的新连接。

1

每个与 SQL Server 的连接都需要内存分配。

因此,打开的连接越多,使用和保留的内存就越多,这些内存可能会被更好地利用。

如果您想知道 SQL Server 中连接使用了多少内存,请参阅以下参考资料。

SQL Server 对象使用的内存


将您的链接更新到 MSDN,但每个连接大约有 300K 的数据量,这可能只是其中一个较小的考虑因素...需要成千上万次的连接才会开始感受到它的影响。 - Shaul Behr

0

已经打开了与数据库服务器的连接。假设您有数百个程序同时访问同一台服务器...

您还应该将其处理掉


0

简单快速的答案是,您越早关闭连接,连接池就能更快地重新使用该连接。


“使用 using 是个好习惯”是我在连接 SQL 时常说的口头禅。SqlConnection 实现了 iDisposable 接口,因此只需将你的 SQL 代码放在“using”块中,就能确保自动调用关闭操作。 - Justin Wignall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接