簡體   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