WebRequest C# 百万条记录
本文关键字:百万 记录 WebRequest | 更新日期: 2023-09-27 18:34:41
我需要一些建议来做一些需要'很长时间'才能运行的事情。
- 我在数据库中有大约 100000 条记录,其中包含日期列。这需要更新。
- 这是通过为每个记录调用一个 URL 并获取日期并更新它来完成的。
- 现在,我已经编写了一次选择 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 我得到了日期。然后我一次更新一条记录。
现在,这需要很长时间。我怎样才能提高它的性能?
是否可以使用 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) );
例如,看看这里的答案:并行扩展
您可以限制同时处于活动状态的线程数。