繁体   English   中英

SQL 服务器 CE 使用过多 Memory

[英]SQL Server CE Using too much Memory

我在我的 C# WinForm 应用程序中使用 SQL 服务器 CE 作为数据库,我的应用程序正在从各个网站收集代理,并插入到 SQL 服务器表中。

代理表:

  1. IP地址

But it seems every insert, memory consumption is increasing slowly, the application starts with 11,000 of memory, by the time it reaches 1,00,000 count, the memory usage is around 87,000 and the queries becomes very slow, which is bad for my app,最初我以为有 memory 泄漏,但找不到,这是我的插入代码。

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 服务器 CE 是否正常或我的应用程序有问题,我也尝试强制垃圾收集但没有用。

我的应用程序将最多收集大约 100 万个代理,收集过程非常快,大约每秒 500 到 1700 个代理,我使用DataGridView虚拟模式分页显示它们,所以所有收集的代理对用户都是可见的,但使用分页,但我是无法从 SQL 服务器 CE 数据库中获得相同的性能,它跟不上其他进程。

请建议,我是否有替代 SQL 服务器 CE 的替代品,它非常适合此类工作,或者我可以跟上快速收获过程的任何方式?

切换到 SqlCeResultSet 和 SqlCeUpdatableRecord 肯定有助于加快速度。 我不确定它是否有助于 memory 的使用。

此外,保持数据库连接打开会有所帮助。 SQL CE 不像 SQL 服务器那样处理连接池,并且为每个查询打开一个新连接会产生相当大的开销。 这可能解释了您报告的一些 memory 用法。

我也会认真考虑迁移到 SQL Server Express 或 SQLite。 任何一个都更适合这项任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM