http://www.dotblogs.com.tw/rainmaker/archive/2011/04/15/22755.aspx
Truncate Log 就可以把 Log 的空間釋放出來...
不過這種指令請找 DBA 代勞~ 不然玩死 DB, 恕不負責 XD
如果DB不多的話
假如你的 DB 叫 MyDB 的話, 下面這三行就會清空log了
如果這樣還會玩死 DB 的話, 堪稱神人
USE MyDB;
BACKUP LOG MyDB WITH no_log;
DBCC SHRINKFILE (N'MyDB_Log' , 0, TRUNCATEONLY);
p81023c提到:
每次刪完歷史資料,
是刪除某些表格的歷史資料, 應是重新建立這些表格的叢集索引, 將空間還給資料庫;
資料庫就可再利用空間了
p81023c提到:
再壓縮資料庫但空間都沒釋放出來,
這動作是將資料庫所配置的空間還給os
對於空間的配置要有3段的概念: OS --> DB --> TABLE
charmmih提到:
對於空間的配置要有3段的概念: OS --> DB --> TABLE
對於空間的釋放也要有3段的概念: TABLE --> DB --> OS
重新建立這些表格的叢集索引,要如何做呢??
查線上叢書...
相關語法如下:
CREATE CLUSTERED INDEX .....WITH DROP_EXISTING;
Rebuild Index 和 Release DB Table Space ... 這好像是兩碼子事 @@
deanya提到:
Rebuild Index
不是重建一般索引, 是重新建立叢集索引...
此動作整個表格及其相關索引均會重新整理過,
之前被刪除的資料空間也會被釋放出來....
如果像假單資料比較多的table 做這個會不會變慢到不行.
charmmih提到:
重新建立叢集索引
此段時間無法進行查詢及交易...
現在硬體配備不錯, 應該100萬筆資料不到1分鐘就好了,
筆數若很多, 建議選離峰時間, 或是在測試環境預估一下時間...
charmmih提到:
重新建立叢集索引...
此動作整個表格及其相關索引均會重新整理過,
之前被刪除的資料空間也會被釋放出來....
是否應該還要像三樓的做法, 才能把空間 Releaee ?!
不然 Rebuild Clustered Index 還是會造成 log 檔的爆肥...
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空間