保持Sql Connection打开以迭代许多请求?或者关闭每一步?

时间:2011-01-26 05:50:21

标签: php asp.net sql vb.net

嘿那里 - 这对于任何调用SQL服务器的操作或任何需要打开连接的操作都是通用的。

假设我有20到1000之间的任何地方选择要对循环数据中的每个项目进行的调用。对于每个步骤,我将从sql中选择,在结构中本地存储数据,然后继续。这不是一个非常昂贵的调用,所以我应该为整个循环保持连接打开吗?或者我应该打开和关闭每一步?

运行时打开连接的费用是多少?我认为保持连接打开会更好,但是想得到正确的响应。

感谢。

4 个答案:

答案 0 :(得分:2)

  

运行时打开连接的费用是多少

这仅考虑CPU速度而不考虑带宽。

保持打开的连接可以节省CPU,但它会阻止其他请求使用该连接。所以这是一个折衷。很难说“正确的反应”是什么而不知道更多,但在任何一种情况下似乎都是tinkering with tolerances instead of nailing the nominals

这就是说我通常首先在一个SQL工作单元的持续时间内保持连接打开然后关闭它。

虽然有一件事看起来有点粗略但是这一行

  

20到1000选择要对循环数据中的每个项目进行的调用。

尝试并执行更多基于集合的操作。

答案 1 :(得分:1)

不仅仅是为了这个循环,你应该保持连接打开整个请求。最好只在开始时打开一次连接,然后关闭一次(在最后)

答案 2 :(得分:0)

您应该更改查询(在这种情况下可能会加入其他表)以包含其他表。尝试在一次数据库调用中获取所有数据。

这是1000多个查询需要花费很多时间。

使用ADO.NET的MSSQL中的连接被缓存,因此当您关闭连接时,实际上关闭了与数据库的实际TCP / IP管道。因此关闭和开放不会花费时间。但无论你在做什么,当你做了1000次时,这一切都会加起来。

在一次数据库调用中获取所有数据,关闭连接,然后在C#代码上执行您需要执行的操作。我尝试和遵循的是每个请求 - 响应周期一次数据库调用。

答案 3 :(得分:0)

您应该使用PDO。它为每个数据库连接创建一个数据对象,您可以在一个页面上引用多个数据库,而无需反复打开和关闭。

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

我在Github上也有一些公共代码来启动你。在github上搜索Wrenbjor并寻找PDO回购。我会链接它,但我仍然是新的,所以我只能在帖子中有一个超级链接。