我有一个程序可以访问数据库并执行具有数据库调用的不同方法。 我已经使用了一个conenction,但它在执行一个长任务时导致超时: 我基本上不得不浏览超过6000条记录并执行存储过程。因为我只使用了一个数据库连接,所以导致超时的事情。
然后我更改了代码,因此我打开并关闭了我使用“using”方法调用的每个方法的连接。
我应该如何处理将被调用的方法。我每次访问该方法时都会打开/关闭连接吗?
或者有不同的方法吗?
我这样做:
foreach(record in MyCollection)//6000
{
using(connection = new SqlConnection(conString))
{
singledata = GetSingleData(record);
}
}
这是一个GetSingleData()
private byte[] GetSingleData(MyObject Data)
{
byte[] singleData = null;
using(SqlCommans......)
{
try
{
.......
//executing stored proc to get just a single row
reader = command.ExecuteReader();
while(reader.Read())
{
singleData = (byte[])reader["ColumnName"];
}
}
catch(SqlException ex)
{
if(!reader.isClosed)
reader.Close();
}
}
return singleData;
}
它是否有效或者我可以设置某种计数器,对于每500条记录,我可以检查连接是否已关闭以及是否重新打开。
感谢的
答案 0 :(得分:0)
尝试使用持久连接。如果您想尝试调整系统(对于MySQL),这里有一篇文章可能会有所帮助: http://www.mysqlperformanceblog.com/2011/04/19/mysql-connection-timeouts/
希望有所帮助。
答案 1 :(得分:0)
没有唯一好方法这样的事情。这完全取决于。如果敏捷性是必须的,并且您需要创建临时解决方案,那么在每个方法调用中打开和关闭连接在理论上可能不太好,但实际上可以接受。
我恳请您阅读这些术语和概念:
他们可能会帮助您获得更高的表现。