2010-03-13 88 views
0

我正在使用C#,實體框架和SQL Server 2008 Express。
我通過互聯網連接到數據庫。
加速保存/更新數據到數據庫的最佳方法是什麼?
將180條記錄保存到數據庫需要87秒的時間。
將相同數量的記錄保存到本地(在同一臺計算機上)SQL Server只需要3.5秒。

對於每一個記錄,我保存/更新我檢查,如果這個主鍵記錄在數據庫中,
如果不存在的話,我只是將它保存,
如果存在的話我用ObjectContext.ApplyCurrentValues更新( entitySetName,currentEntity)方法。如何加速通過互聯網將數據保存到數據庫?

回答

6

有幾個原因不通過互聯網使用SQL。

  • 一個,對我來說會構成太大的 風險暴露在互聯網上的SQL服務器 。我不想SQL攻擊:)。如果你流量爲 ,那麼這是一個不同的故事 ,因爲中間人攻擊的人是 ,這很難。
  • 二,SQL 協議是一個「健談」協議,因此具有高延遲的服務器之間的鏈接將會影響您的查詢。

如果可能的話,我會在SQL端建立一個WCF服務,並讓我的客戶端將數據發送到服務,這將執行查詢到數據庫。與SQL相比,任何WCF協議都不那麼健談,並且與現在看到的相比,您很可能會實現速度增益。

當然,在傳輸數據時分批處理數據將有助於減少提交記錄所需的流量。由於延遲,您希望儘可能少地通過線路進行呼叫。

1

我會考慮發送一個類似於CSV的字符串與您的所有數據到一個存儲過程,然後在服務器上存儲過程將使用SQL函數來拆分數據並創建一個臨時表,然後存儲過程將繼續進行檢查並在必要時插入。

0

除了Mikael Svenson寫的。

您可以通過「蠻力」克服延遲並在多個數據庫連接上運行。但總的來說,我真的推薦Mikael的建議。

相關問題