2009-04-12 80 views
0

我們正在構建一個應用程序,每個表格需要每天插入大約150萬行數據。我們有16張桌子。 我們追蹤包括當日數據在內的3日曆史數據。在插入的運行時查詢數據:我們可以使用緩存嗎?

該應用程序使用C#完成;在服務器端,我們運行一個在市場營業時間(4.5小時)內填充數據表的exe文件,並且我們每5秒更新一次16個表。

在客戶端,應用程序獲取需要最近插入的數據(在最近5秒內)的用戶查詢以及可能是今天或之前的歷史點,並以某種方式繪製它們。

我們有一些嚴重的性能問題,因爲一個查詢可能需要1秒或更多,這太多了。問題是,對於當今在運行時插入的數據,我們是否可以利用緩存,而不是在每次我們想從當前數據中獲取某些內容時訪問數據庫?這會更有效率嗎?如果是這樣,我們該怎麼做? P.S一天的數據大約爲300 MB,並且我們有足夠的RAM

回答

0

保留數據的副本以及用於檢索數據的日期時間。下次只檢索新數據,這會最大限度地減少通過線路發送的數據量。

如果是所有查詢在操作中運行達1秒,那麼您可能遇到的問題是UI凍結。如果是這樣的話,不要在UI線程上做。

Upate(基於評論):您在控件的事件處理程序運行的代碼,運行在UI線程,這是什麼原因造成的UI凍結。沒有一種方法可以在單獨的線程中運行它,因此我建議在此方案中使用BackGroundWorker。最後看社區提供的示例。

+0

感謝您的回答..經過一些優化後,查詢時間現在爲0秒。但是,我們正在查詢512個VPN連接,並且UI凍結。我沒有得到你真正想要解決的問題!你能再詳細一點嗎? – mustafabar 2009-04-14 10:32:52

+0

@mustafabar添加了關於它的更新。 – eglasius 2009-04-14 17:01:46

相關問題