SQL Server CE中Shrink和Compact有什么区别?

时间:2009-04-01 22:40:04

标签: sql-server sql-server-ce

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

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

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

1 个答案:

答案 0 :(得分:9)

来自SQL Server Compact Team Blog

  

这两者之间的区别是   与内部和外部非常相似   内存碎片。

     


  来自SqlCeEngine.Shrink文档,

     

回收数据库中浪费的空间   通过移动空和未分配的页面   到文件的末尾,然后   截断文件。您可以   自动配置数据库   通过设置自动收缩来缩小   连接字符串中的阈值选项。   收缩不会造成暂时的影响   数据库文件。

     

来自SqlCeEngine.Compact文档,

     

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

     


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