2010-05-24 179 views
2

我在其中一個客戶端應用程序中使用了SQL Server CE 3.5 SP1。當用戶加載程序並開始使用它時,性能很好。如果用戶讓程序閒置一段時間,程序需要花費相當長的時間(10秒或更長時間)才能響應。每次用戶請求一個新屏幕時,都會調用SQL CE數據庫來獲取該屏幕的數據。看起來硬盤可能會休眠,然後當訪問數據庫時,硬盤必須喚醒。是否有可能將整個數據庫加載到內存中並從中工作?對於如何提高性能還有其他建議嗎?SQL Server Compact Edition 3.5性能

+1

我建議你所擁有的只不過是一種預感;在你付出很多努力之前,我會確保你確切地理解問題的原因。 – overslacked 2010-05-24 16:57:07

回答

1

我很懷疑問題是SqlCE。這是一個非常快速的數據庫。正在處理中。此外,我已經加載了數十萬條記錄,並且如果使用SQL Express,我將獲得相同的性能。

你能加載整個數據庫嗎?當然,這就是ADO.NET的用途。不要這樣做。

我懷疑你有其他問題。例如,您是在加載表單之前預處理數據,例如設置數據集關係,將表達式列添加到數據表等等。用戶的計算機也可能沒有足夠的內存,而且您所遇到的是Windows頁面錯誤。你認爲SqlCe訪問數據庫,可能是Windows在寫入分頁文件後將應用程序交換回內存。

+0

在實際做更多研究之前(我對此感到羞恥),我發佈了這個問題太快了。你是對的。我爲幾個不同的視圖加載了數百條記錄,它似乎是導致性能問題的Windows分頁。 – awilinsk 2010-06-08 13:01:22

0

請確保在應用程序期間保持與數據庫的連接處於打開狀態。打開一個SqlCeConnection是一個昂貴的操作。

+0

它不是十秒的昂貴。 – AMissico 2010-06-05 10:29:03

+0

那麼,我在Windows服務應用程序中遇到了使用SqlServerCE作爲緩存數據庫的性能問題。我使用分析器來確定性能損失的原因。我發現SqlServerCe連接關閉是原因。打開連接非常耗時,但關閉連接需要8倍的時間! 這是關於性能:http://stackoverflow.com/questions/386223/sqlce-connections-keep-them-open-or-let-them-close。 – 2010-09-01 11:27:34

相關問題