WebRequest C# 百万条记录

本文关键字:百万 记录 WebRequest | 更新日期: 2023-09-27 18:34:41

我需要一些建议来做一些需要'很长时间'才能运行的事情。

  1. 我在数据库中有大约 100000 条记录,其中包含日期列。这需要更新。
  2. 这是通过为每个记录调用一个 URL 并获取日期并更新它来完成的。
  3. 现在,我已经编写了一次选择 1000 条记录的 C# 代码。

法典:

WebRequest wr = WebRequest.Create(inputURL);
HttpWebResponse response = (HttpWebResponse)wr.GetResponse();
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Read the content. 
StreamReader reader = new StreamReader(dataStream);
string responseString = reader.ReadToEnd();

响应采用 json 的形式,因此使用 Jsonserializer 我得到了日期。然后我一次更新一条记录。

现在,这需要很长时间。我怎样才能提高它的性能?

WebRequest C# 百万条记录

是否可以使用 SSMS 或其他方法执行 sql?您尚未指定更新日期的规则,但是如果您有一个非常简单的情况,例如为每个日期添加 10 天,您可以使用一行代码在毫秒内执行它,即

update mytable set mydate = dateadd(day, 10, mydate) ...voila.

即使您有更复杂的更新规则,通过 SQL 执行此操作也可能比通过 WebRequest 一次一条记录更好......

更新日期的规则是什么?

您可以同时打开服务器的许多 URL。 一个简单的方法是在 .NET 中使用 TPL(任务并行库(调用此方法(我认为是 V4 及更高版本,也许是 3.5(

List<string> Urls = GetMyList(); 
System.Threading.Tasks.Parallel.ForEach( Urls, u=>Doit(u) );

例如,看看这里的答案:并行扩展

您可以限制同时处于活动状态的线程数。