繁体   English   中英

webrequest c#百万条记录

[英]webrequest c# million records

对于我正在做的事情,我需要一些建议,这需要花费很长时间。

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

码:

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(我认为V4和更高版本,可能是3.5)中的TPL(任务并行库)来调用此方法。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM