iT邦幫忙

0

資料庫sql2008 空間釋放問題?

ser

每次刪完歷史資料, 再壓縮資料庫但空間都沒釋放出來, 是還有那裡要做嗎?,
有一個按了說會釋放空間未使用空間之前重新組織檔案,
但速度會變慢, 大家有做過嗎, 大約多慢會很久嗎,多久呢?

6
u8526425
iT邦大師 1 級 ‧ 2012-12-19 18:07:41

慢的問題
取決於你的環境
沒跑過
誰也說不準

8
丁丁 (Dean)
iT邦大師 6 級 ‧ 2012-12-19 20:03:40

http://www.dotblogs.com.tw/rainmaker/archive/2011/04/15/22755.aspx
Truncate Log 就可以把 Log 的空間釋放出來...
不過這種指令請找 DBA 代勞~ 不然玩死 DB, 恕不負責 XD

10
player
iT邦大師 1 級 ‧ 2012-12-19 20:27:09

如果DB不多的話
假如你的 DB 叫 MyDB 的話, 下面這三行就會清空log了
如果這樣還會玩死 DB 的話, 堪稱神人

USE MyDB;
BACKUP LOG MyDB WITH no_log;
DBCC SHRINKFILE (N'MyDB_Log' , 0, TRUNCATEONLY);

4
charmmih
iT邦研究生 5 級 ‧ 2012-12-20 09:57:01

p81023c提到:
每次刪完歷史資料,

是刪除某些表格的歷史資料, 應是重新建立這些表格的叢集索引, 將空間還給資料庫;
資料庫就可再利用空間了

p81023c提到:
再壓縮資料庫但空間都沒釋放出來,

這動作是將資料庫所配置的空間還給os

對於空間的配置要有3段的概念: OS --> DB --> TABLE

看更多先前的回應...收起先前的回應...
charmmih iT邦研究生 5 級 ‧ 2012-12-20 09:58:50 檢舉

charmmih提到:
對於空間的配置要有3段的概念: OS --> DB --> TABLE

對於空間的釋放也要有3段的概念: TABLE --> DB --> OS

p81023c iT邦新手 5 級 ‧ 2012-12-20 12:25:57 檢舉

重新建立這些表格的叢集索引,要如何做呢??

charmmih iT邦研究生 5 級 ‧ 2012-12-20 12:31:13 檢舉

查線上叢書...
相關語法如下:
CREATE CLUSTERED INDEX .....WITH DROP_EXISTING;

Rebuild Index 和 Release DB Table Space ... 這好像是兩碼子事 @@

charmmih iT邦研究生 5 級 ‧ 2012-12-20 14:17:50 檢舉

deanya提到:
Rebuild Index

不是重建一般索引, 是重新建立叢集索引...
此動作整個表格及其相關索引均會重新整理過,
之前被刪除的資料空間也會被釋放出來....

p81023c iT邦新手 5 級 ‧ 2012-12-20 17:25:20 檢舉

如果像假單資料比較多的table 做這個會不會變慢到不行.

charmmih iT邦研究生 5 級 ‧ 2012-12-20 18:15:57 檢舉

charmmih提到:
重新建立叢集索引

此段時間無法進行查詢及交易...
現在硬體配備不錯, 應該100萬筆資料不到1分鐘就好了,
筆數若很多, 建議選離峰時間, 或是在測試環境預估一下時間...

charmmih提到:
重新建立叢集索引...
此動作整個表格及其相關索引均會重新整理過,
之前被刪除的資料空間也會被釋放出來....

是否應該還要像三樓的做法, 才能把空間 Releaee ?!
不然 Rebuild Clustered Index 還是會造成 log 檔的爆肥...

charmmih iT邦研究生 5 級 ‧ 2012-12-21 10:26:21 檢舉

deanya提到:

是否應該還要像三樓的做法, 才能把空間 Releaee ?!

3樓的做法是備份LOG後清除, 釋放LOG EXTENT 回資料庫, 再壓縮將空間回os
其實只要將RECOVERY=SIMPLE, 就回自動在確認(commit)後, 清除該交易的記錄回資料庫

LOG 存在意義是要做資料庫還原用, 例如:
凌晨full backup, 6:00~11:00 每小時做LOG backup並清除己備的log
日後需要還原時, 是 full backup + log backup xn

deanya提到:

不然 Rebuild Clustered Index 還是會造成 log 檔的爆肥...

確實, 維護索引視同交易, 會增加LOG, 因此最好需要預先開出LOG, tempdb空間

我要發表回答

立即登入回答