2013-04-27 15 views
1

我有一個WCF以一種在表中插入的方法在工作者角色中運行。如何在工作者角色中使用WCF進行批量插入

我有很多客戶端會訪問這個方法來在表中插入數據,但我真的需要在這方面的性能。

在我的插入方法中,我一個接一個地插入,所以我想在我的WCF收到100條記錄之後將其更改爲執行批量插入。我該怎麼做,我可以在哪裏存儲一個帶有這些記錄列表的變量,以便稍後進行批量插入?

回答

3

你真的需要考慮你的數據的耐久性(或缺乏)。如果您等待100次上傳,您將在哪裏臨時存儲數據?唯一的安全地方是在斑點,表或隊列(或SQL數據庫服務)。

如果您存儲在RAM中,它會變得不穩定,並且您可能會丟失數據(另外,您的數據將分散到多個服務器實例中,因此在刷新其中一個服務器實例之前,實際上最終可能會緩衝超過100個數據項)。

如果您存儲在隊列中,則會像寫入表一樣達到相同的性能曲線。與blob一樣。

這可能是一個不成熟的優化。表存儲爲您提供每分區每秒2,000個事務(存儲帳戶中每秒最多20,000個事務)。你可以有多個存儲帳戶。

假設你仔細劃分您的數據(與不同分區鍵,對存儲在一個分區中的所有內容),你應該看到每秒超過2,000個事務爲您的存儲吞吐量。

您還可以將最高10Gbps的入站內容移動到您的存儲帳戶。考慮到我們新的8核56GB機器的最大網卡帶寬爲2Gbps,您需要同時運行5個才能達到此限制。使用單核虛擬機(每核心速率爲100Mbps),您需要100個實例來飽和存儲帳戶的入口帶寬潛力。

有關存儲帳戶帶寬的所有詳細信息均在this article之內。

+0

那麼我怎麼能在WorkerRole中每秒獲得這2000個插入? – Greg 2013-04-27 16:44:44

+0

輔助角色等同於Windows Server虛擬機。只需設計您的WCF服務即可同時處理多個傳入請求。你的WCF服務可以每秒處理2000次上傳嗎?如果是這樣,爲什麼你不能每秒寫入2000次存儲?這也引出了一個問題:您是否嘗試過做任何基準測試?如果你甚至沒有基線,有點難以優化。 – 2013-04-27 16:53:59

+0

謝謝你,我想我發現了我的問題。 – Greg 2013-04-27 21:49:18

相關問題