2010-03-16 75 views
0

我們有一個應用程序(用C#編寫)將數據庫中的實時股票市場價格(SQL Server 2005)存儲起來。它在一天內插入大約100萬條記錄。現在我們正在增加更多的市場部分,沒有記錄會是雙倍的(2百萬/天)。在SQL Server 2005中插入大量數據

目前平均每秒記錄的插入是約50,最大值爲450和最小值是0。

要檢查我的價格表一定條件下我已經使用服務代理(異步觸發)。目前運行良好(CPU利用率約35%)。

現在我打算在當前股票價格的內存數據集中創建a。我們想做一些簡單的計算。

目前我正在使用xml批量插入方法。 (在Storred Proc中的OPENXML)

我想知道成員對此的不同看法。

請提供處理此類情況的方法。

+4

你的問題是什麼?你在問一個可行的架構嗎? – 2010-03-16 14:53:54

+0

「我們會進行一些簡單的計算」如果閱讀,我們想做一些簡單的計算? 爲什麼要從數據庫中卸載數據,將數據載入內存數據集以執行簡單的計算,SQL不僅僅是能夠進行計算,而且如果不是這樣,那麼您可以在SQL Server中運行C#代碼。 – 2010-03-16 16:27:59

+0

@Stephanie Page,現在我正在做數據庫中的所有事情。簡單的計算是特定股票的當前價格>一個價值(由用戶提供)。我想把這些條件放在內存中,因爲應用程序需要根據這些條件執行操作。目前,我將記錄寫入數據庫,某些觸發器將條件檢查任務存儲結果執行到不同的表,並且應用程序繼續查詢該表以進行更改。這延遲了輸出。如果存在需要在數據庫中保存的複雜條件, – Manjoor 2010-03-17 06:08:09

回答

0

你的問題是閱讀,但標題暗示寫作?

閱讀時,考慮(位不要盲目使用)臨時表來緩存數據,如果你要做一些處理。但是,通過簡單的計算,我假設彙總實時AVG,MAX等?

通常會拖動數據,將其緩存在客戶端並將其聚合到那裏。

如果批量上傳:

  • SqlBulkCopy的或類似的臨時表
  • 單次寫入從分期到決賽桌

如果單個上傳,只需將其插入

一百萬行是SQL Server('Orable,MySQL,DB2等)能夠執行的舍入錯誤

例如:35k transaction (not rows) per second

+0

感謝您的回覆。簡單的條件只是檢查>,<,=等,用於計算AVG,MAX,MIN ....我仍然使用存儲過程。 其他複雜的計算使SQL服務器處於壓力之下。我們有UI來添加條件。 有大量的動態sql語句,具有Group by子句,需要每2秒執行一次。 它使服務器非常繁忙,有時CPU使用率達到100%。 那時候我們刪除了一些條件。 現在我試圖移動一些條件到我的應用程序,我直接檢查它與接收到的數據。 – Manjoor 2010-03-17 06:18:58