iT邦幫忙

0

SQL SERVER 壓縮資料庫後MDF沒變小

  • 分享至 

  • xImage

請問一下
本來某一DB內約有30億筆歷史資料
MDF佔用空間約1.8TB左右

刪除了一堆歷史資料後
約剩18億筆歷史資料

壓縮資料庫,壓縮檔案 MDF都沒變小
1.有人知道發生什麼事了嗎?

另外壓縮檔案內有一個選項是
釋放未使用空間之前重新組織檔案
2.選這個會不會影響之前建立的[索引]或[其他設定]?
3.最小空間用預設值,之料會不會變少?
4.
感謝各位幫忙

https://ithelp.ithome.com.tw/upload/images/20220713/200824561wNatV0FV8.png

https://ithelp.ithome.com.tw/upload/images/20220713/20082456mT4cTgHWV9.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-13 12:09:23

檔案類型(除了「資料」外)選「記錄」也壓一下
看看會不會變小

阿偉 iT邦新手 2 級 ‧ 2022-07-13 12:57:08 檢舉

記錄壓了,LDF有變小

0
石頭
iT邦高手 1 級 ‧ 2022-07-13 13:31:35

請使用 DBCC SHRINKDATABASE 釋放資源給 OS, 另外看你一下你的 recovery-models 是哪種

需要有 DB owner 權限

0

可以執行 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;

阿偉 iT邦新手 2 級 ‧ 2022-07-13 14:25:50 檢舉

請問 DBCC SHRINKFILE(N'DB_001_log', 1);
參數1是什麼意思?

allenlwh iT邦高手 1 級 ‧ 2022-07-13 15:50:33 檢舉
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。 這僅適用於從未包含過資料的空白檔案。

https://docs.microsoft.com/zh-tw/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-ver16

0
BKY
iT邦好手 1 級 ‧ 2022-07-13 15:37:34

把資料庫先做重建索引之後再壓縮試看看

0
I code so I am
iT邦高手 1 級 ‧ 2022-07-14 07:29:16

比較徹底的方法是備份後再還原,所有的transaction log會清除、硬碟配置會在連續區塊。

我要發表回答

立即登入回答