2011-05-09 69 views
0

我正在開發一個非實時系統,但最終用戶計算機和數據庫之間存在一個介入式獨立服務器。這個想法是,每當用戶發送內容時,數據庫服務器不會負擔,數據庫機器上的Windows服務會定期掃描中繼服務器,並更新數據庫,刪除中繼盒上的臨時文件。用於讀取文件並將內容插入到數據庫中的性能

在幾千臺計算機上安裝的客戶端軟件幾乎同時發送信息的情況。以下情況適用:

  • 上述情況不會經常發生,但可能每隔一週發生一次。
  • 對於每臺機器,24個字節的數據(磁盤上的4k)寫在中繼服務器上,然後我們希望使用中繼服務器來拾取和更新數據庫。因此,儘管目前用戶羣只有幾千人,但他們可能會花費數百萬加班。

我正在考慮批量操作,一次只能讀取大約15,000 - 20,000個文件,並且每次都運行(可從app.config修改)。問題是,如果用戶羣增長到幾百萬,需要幾天才能完成。是的,它不一定是實時信息,但等待數天才能到達數據庫也是不理想的。

我認爲如果繼電器盒被擊穿,總會出現瓶頸,但是有更好的方法來提高性能並在合理的時間(一天兩次)獲得數據嗎?

問候, F.

回答

0

我想你可能會認爲,爲避免錘擊磁盤只有一個線程讀取文件,然後把手拿開處理多個線程寫入到數據庫,並返回到磁盤線程提交後刪除文件。數據庫線程的數量可以從「app.config中修改」來找到硬件配置的最佳值。

只是我2美分讓你思考。

相關問題