我在我的C#WinForm應用程序中使用SQL Server CE作爲數據庫,我的應用程序正在從各個網站收集代理,並且只插入一個SQL Server CE表中的一列。SQL Server CE使用太多的內存
代理表:
- ip地址
但似乎每一次插入,內存消耗是緩慢增加,應用程序的內存11000開始,通過它達到1,00,000計數的時間,內存使用量約爲87,000,查詢變得非常緩慢,這對我的應用程序不利,最初我以爲有內存泄漏,但找不到任何,這裏是我的代碼插入。
public void InsertData(DemoTable _table)
{
string strInsertQuery = string.Format("INSERT INTO DemoTable (Value) VALUES ({0})", _table.Value);
using (connection = new SqlCeConnection(connectionString))
{
connection.Open();
using (command = connection.CreateCommand())
{
command.CommandText = strInsertQuery;
command.ExecuteNonQuery();
}
}
}
這是正常的SQL Server CE或者我的應用程序出了問題,我也試圖強制垃圾回收但沒用。
我的應用程序將最多收集約100萬個代理,收穫過程非常快速,大約每秒500到1700個代理,我使用DataGridView
虛擬模式分頁顯示它們,因此所有收集的代理對用戶可見,但使用分頁,但是我無法從SQL Server CE數據庫中獲得相同的性能,但它不能跟上其他進程。
請建議,我是否有SQL Server CE的替代方案,這對於這類工作是完美的,還是我能跟上快速收穫流程的任何方式?
SQLce從未打算處理這種負載。你應該得到Sql Server。 – Amy
您可以嘗試使用SqlCeResultSet和SqlCeUpdateableRecord以獲得更快的INSERT。如上所述,你應該考慮SQL Server和聰明的緩存這些類型的負載 – ErikEJ