【发布时间】:2026-01-07 01:10:02
【问题描述】:
我在我的 C# WinForm 应用程序中使用 SQL Server CE 作为数据库,我的应用程序正在从各种网站收集代理,并插入到 SQL Server CE 表中,只有一列。
代理表:
- IP 地址
但似乎每次插入,内存消耗都在缓慢增加,应用程序以 11,000 内存开始,当计数达到 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。
-
您可以尝试使用 SqlCeResultSet 和 SqlCeUpdateableRecord 来加快插入速度。如前所述,您应该考虑使用 SQL Server 和巧妙的缓存来处理这些类型的负载
标签: c# .net windows performance sql-server-ce