請問一下
本來某一DB內約有30億筆歷史資料
MDF佔用空間約1.8TB左右
刪除了一堆歷史資料後
約剩18億筆歷史資料
壓縮資料庫,壓縮檔案 MDF都沒變小
1.有人知道發生什麼事了嗎?
另外壓縮檔案內有一個選項是
釋放未使用空間之前重新組織檔案
2.選這個會不會影響之前建立的[索引]或[其他設定]?
3.最小空間用預設值,之料會不會變少?
4.
感謝各位幫忙
請使用 DBCC SHRINKDATABASE 釋放資源給 OS, 另外看你一下你的 recovery-models 是哪種
需要有 DB owner 權限
可以執行 Script,會比較省心,以下 Script 提供,希望能幫到您。
/*
假設 DB 名稱是 DB_001,Log File 是 DB_001_log...
如要壓縮乾淨,建議先轉為 Simple Mode 後壓縮,壓完後再轉回 Full 模式。
Executor 必須有 DB Owner 權限。
注意,此語法雖壓得很乾淨,但建議在離峰時間進行,以DB維運為由進行,在此期間無法存取。
*/
use DB_001;
ALTER DATABASE DB_001 SET RECOVERY SIMPLE;
DBCC SHRINKFILE(N'DB_001_log', 1);
DBCC SHRINKDATABASE (N'DB_001', 0,TRUNCATEONLY);
ALTER DATABASE DB_001 SET RECOVERY FULL;
請問 DBCC SHRINKFILE(N'DB_001_log', 1);
參數1是什麼意思?
DBCC SHRINKFILE
(
{ file_name | file_id }
{ [ , EMPTYFILE ]
| [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
}
)
[ WITH
NO_INFOMSGS ,
{
[ WAIT_AT_LOW_PRIORITY
[ (
<wait_at_low_priority_option_list>
)]
]
]
< wait_at_low_priority_option > ::=
ABORT_AFTER_WAIT = { SELF | BLOCKERS }
target_size
整數 - 檔案的新 MB 大小。 若未指定或為 0,則 DBCC SHRINKFILE 會縮減成檔案建立大小。
您可以使用 DBCC SHRINKFILE target_size 縮減空白檔案的預設大小。 例如,如果建立 5 MB 的檔案,然後再將檔案縮減為 3 MB 且檔案仍維持空白,則預設的檔案大小會設定為 3 MB。 這僅適用於從未包含過資料的空白檔案。
比較徹底的方法是備份後再還原,所有的transaction log會清除、硬碟配置會在連續區塊。