2011-08-24 27 views
0

我將在每批中創建/保存大量記錄(30,000)到數據庫表。 如果我使用並行程序來縮短處理時間,我該如何處理以下問題?.net:創建/存儲與SQL服務器並行的大量數據

  • 數據庫表將被封鎖,由於預期
  • 有沒有我可以參考任何圖案的表現實際上並不那麼好?

在此先感謝。

回答

0

您確定需要並行處理嗎? 30000可能不是大。我建議你先看看SqlBulkCopy班。這裏有一個鏈接,說明如何使用它:Using SqlBulkCopy To Perform Efficient Bulk SQL Operations

+0

謝謝西蒙。坦率地說,我不確定並行編程是否有助於我的場景。恐怕我的問題標題也不夠清楚。整個處理不僅僅是存儲數據。它實際上經歷了一個複雜的過程,並且作爲結果的一部分,它生成數據並將它們存儲到幾個表中 – Zalan

0

首先,大多數數據庫專業人士不會考慮30K記錄一個大型數據集 - 你確定你需要擔心性能?

取決於一大堆因素,數據庫服務器實際上可以很好地處理多個進程在同一個表中插入/更新數據 - 這是他們生活中的主要目的。我假設你確實是指MS SQL Server,Oracle或MySQL等數據庫服務器產品。

Simon Mourier建議使用BulkCopy可能是將大型數據集打入表格的最快方法。

如果您確實需要運行並行處理,關鍵是事務管理 - 如果每個線程啓動一個事務並且很長一段時間沒有提交它,您可能會遇到鎖定問題。閱讀你的數據庫的實現,並嘗試進行短期運行事務。