簡體   English   中英

在Sql Server CE中收縮還是壓縮?

[英]shrink or compact in Sql Server CE?

我正在使用Visual Studio 2008.我是sqlce的新手。我正在檢查sdf文件,如果sdf不存在,我創建然后插入大約5000行到我的sqlce db.If sdf存在,首先我刪除所有表的行然后將這些記錄插入到現有的表中。插入完成后,我正在壓縮數據庫。順便說一下,壓縮持續大約13秒。我知道一個調用Shrink.Shrink和Compact的方法使db更小但是在這個scenerio中我應該使用哪個?如何在更短的時間內進行壓縮?我不需要備份sdf和緊湊后,我刪除舊的sdf.i閱讀這個主題但無法決定我應該使用。

請參閱:

來自SQL Server Compact團隊博客的引用

SqlCeEngine / ISSCEEngine:Shrink Vs Compact這兩者之間的差異與內部和外部內存碎片非常相似。

SqlCeEngine.Shrink文檔

通過將空的和未分配的頁面移動到文件的末尾,然后截斷文件,來回收數據庫中浪費的空間。 您可以通過在連接字符串中設置自動收縮閾值選項來將數據庫配置為自動收縮。 收縮不會創建臨時數據庫文件。

SqlCeEngine.Compact文檔

通過從現有文件創建新數據庫文件來回收數據庫中浪費的空間。 通過創建新的數據庫手段,它可以回收行之間的可用空間。

為了更清楚,Shrink聲稱完全免費或未分配的頁面; 其中,Compact也在頁面中聲稱浪費了空間。 因此,Compact需要創建一個新的數據庫文件。

頁面中的空白區域可能是以下結果:

1)如果頁面中有5行,則刪除其中兩行

2)如果頁面中間有一行在更新時需要更多空間,則已移出頁面(例如:nvarchar列更新)

由於以下原因,空頁面和未分配的頁面可能會保留在數據庫中:

1)刪除頁面中的所有行

2)丟棄整個桌子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM