我在我的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