2009-10-18 97 views
7

我正在使用Visual Studio 2008.我是新的sqlce.I正在檢查sdf文件,如果sdf doesnt存在,我創建,然後插入大約5000行到我的sqlce db。如果sdf存在,首先我刪除所有表的行然後插入這些記錄到現有的表格。插入完成後,我正在壓縮數據庫。順便說一句,壓縮持續約13秒。我知道一個方法,稱爲Shrink.Shrink和Compact使db更小,但在這個場景中它們應該哪個應該我使用?我怎樣才能縮短時間壓縮?我不需要備份的SDF和緊湊後,我刪除舊sdf.i閱讀this主題,但無法決定我應該使用。在Sql Server CE中縮小或壓縮?

回答

13

請參閱:

SQL Server Compact Team Blog行情:

SqlCeEngine/ISSCEEngine:收縮Vs的緊湊型 之間的區別這兩個是非常相似內部 和外部存儲器碎片心理狀態。

SqlCeEngine.Shrink documentation

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

SqlCeEngine.Compact documentation

回收由從 現有文件中創建一個新的數據庫文件浪費數據庫 空間。通過創建一個新的 數據庫方式,它將回收行之間的空閒空間 。

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

在頁面空白空間可能是 的結果:

1)如果有在 頁5行,如果有一個排在他們兩個都被刪除

2)這對需要更新的更多 空間 頁面的中間,已經搬出了頁面(例如: nvarchar列更新)

空白頁和分配頁 可以留在數據庫中重SULT 的:

1)在一個頁面中的所有行被刪除

2)所有表被刪除