SQL Server 「資料收縮」詳解

2021-07-14 02:10:08 字數 1580 閱讀 2240

在ms中建立資料庫時會為資料庫分配初始的大小(如下圖:資料庫和日誌兩個檔案),隨著資料庫的使用檔案會逐漸增大。資料庫檔案大小的增加有兩種方式:

要明白為何資料庫需要收縮,首先需要理解兩個概念:

由此可以理解為:分配空間》=使用空間。在實際使用的過程中可能會出現分配空間為100mb,而使用空間僅為20mb,這就造成了磁碟有80mb的浪費,為了消除這種浪費就需要使用「資料收縮」功能。

3.1 通過設定資料庫選項auto_shrink為true,即讓資料庫自動收縮,如下圖:

3.2 收縮資料庫檔案

右鍵資料庫—任務—收縮—檔案,如下圖:

檔案型別:選擇所要收縮的是「資料庫檔案」還是「日誌檔案」。

當前分配的空間:資料庫為該檔案分配的大小,就是在磁碟上看到的檔案大小。

可用空間:就是「當前分配的空間」 減去「實際使用的空間」。

收縮操作:

① 釋放未使用的空間:將該檔案中未使用的空間釋放出來,資料在檔案中不移動;

② 在釋放未使用的空間前重新組織頁:此選項可以將檔案收縮到「指定大小」,並將資料重新組織。其最小值為資料庫「實際使用的空間」;

③ 通過將資料遷移到同一檔案組的其他檔案來清空檔案:不解釋,很少用。

上述操作也可以使用t-sql替代:

dbcc shrinkfile(『資料庫名』,  targetsize);			/* 收縮資料庫檔案 */

dbcc shrinkfile(『資料庫名_log』, targetsize); /* 收縮日誌檔案 */

targetsize:單位為兆,必須為整數,dbcc shrinkfile 嘗試將檔案收縮到指定大小。

dbcc shrinkfile 不會將檔案收縮到小於「實際使用的空間」大小,例如「分配空間」為10m,「實際使用空間」為6m,當制定targetsize為1時,則將該檔案收縮到6m,不會將檔案收縮到1m。

3.3 收縮資料庫

即同時收縮「資料庫檔案」和「日誌檔案」,右鍵資料庫—任務—收縮—資料庫

收縮後的最大可用空間:設為0,即收縮所有的可用空間。

也可以使用t-sql完成資料庫的收縮:

dbcc shrinkdatabase(資料庫名,百分比)
百分比:即「收縮後檔案中的最大可用空間」,取值範圍「大於等於0, 小於100%」,實際使用中設為0即可。

SQL Server 「資料收縮」詳解

在ms中建立資料庫時會為資料庫分配初始的大小 如下圖 資料庫和日誌兩個檔案 隨著資料庫的使用檔案會逐漸增大。資料庫檔案大小的增加有兩種方式 要明白為何資料庫需要收縮,首先需要理解兩個概念 由此可以理解為 分配空間 使用空間。在實際使用的過程中可能會出現分配空間為100mb,而使用空間僅為20mb,這...

SQL Server 「資料收縮」詳解

在ms中建立資料庫時會為資料庫分配初始的大小 如下圖 資料庫和日誌兩個檔案 隨著資料庫的使用檔案會逐漸增大。資料庫檔案大小的增加有兩種方式 要明白為何資料庫需要收縮,首先需要理解兩個概念 由此可以理解為 分配空間 使用空間。在實際使用的過程中可能會出現分配空間為100mb,而使用空間僅為20mb,這...

SQLServer收縮資料庫

以下語句用於設定資料庫定時自動收縮資料庫 use master gosp dboption testdb,autoshrink true gouse testdb gocheckpoint go 清空日誌語句 dump transaction testdb with no log 截斷事務日誌 ba...