【问题标题】:Sqlite while switching Database files [duplicate]切换数据库文件时的Sqlite [重复]
【发布时间】:2014-06-17 05:25:58
【问题描述】:


我有 .Net 应用程序,用户可以在其中打开和关闭许多
Sqlite 数据库文件, 一次一次。
我使用 System.Data.SQLite dll 包装器。
从一个数据库移动到另一个数据库时,connection.close() 是否足够,
我在某些地方看到调用 GC.Collect()。
如何正确处理这些数据库切换?

谢谢,阿维。

【问题讨论】:

标签: .net database sqlite system.data.sqlite


【解决方案1】:

这里有connection.close()GC.Collect()的效果的详细解释:

System.Data.SQLite Close() not releasing database file

基本上connection.close() 只处理句柄,但在垃圾收集器运行之前不会释放数据库指针。 请注意GC.Collect()是一个繁重的操作,如果你的上下文切换过于频繁并且你不需要删除数据库文件,你可能会更好地让指针在内存中并由.Net框架处理它。

我的建议是,对这两个选项进行一些性能测试:

  • 使用 GC.Collect
  • 没有 GC.Collect

检查进程的延迟、内存使用情况和 CPU 使用情况。根据测试结果做出决定。

祝你好运!

[编辑] 阅读更多关于它的信息,我发现了这个链接:

What is the difference between connection.Close() and connection.Dispose()?

根据问题,使用using语句或调用connection.Dispose()时,不需要调用GC.Collect()方法。

干杯,

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2015-06-02
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多