【问题标题】:What is the difference between Shrink and Compact in SQL Server CE?SQL Server CE 中的 Shrink 和 Compact 有什么区别?
【发布时间】:2009-04-01 22:40:04
【问题描述】:

我有一个定期运行的方法来优化我的应用程序的 SQL Server Compact Edition (3.5) 数据库。现有代码使用 Shrink() 方法:

        SqlCeEngine engine = new SqlCeEngine(dbConnectionString);
        engine.Shrink();

今天我注意到还有一个 Compact() 方法。哪个更适合定期维护?

【问题讨论】:

    标签: sql-server sql-server-ce


    【解决方案1】:

    来自SQL Server Compact Team Blog

    这两者的区别是 非常类似于内部和外部 内存碎片。


    来自SqlCeEngine.Shrink 文档,

    回收数据库中浪费的空间 通过移动空的和未分配的页面 到文件末尾,然后 截断文件。你可以 将数据库配置为自动 通过设置自动收缩来收缩 连接字符串中的阈值选项。 收缩不会创建临时 数据库文件。

    来自SqlCeEngine.Compact 文档,

    回收数据库中浪费的空间 通过创建一个新的数据库文件 现有文件。通过创建一个新的 数据库意味着,它回收免费的 行之间的空间。


    更清楚地说,Shrink 声称 完全免费的页面或 未分配;其中,Compact 声称 页面中也浪费了空间。 因此 Compact 需要创建一个新的 数据库文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 2011-03-15
      • 1970-01-01
      • 2013-08-03
      • 2015-06-06
      相关资源
      最近更新 更多