2013-04-12 43 views
1

我們有一個龐大的數據庫(300GB),其中大部分空間都被一張大桌子佔據。這個表有許多列定義爲float,每個8字節。不過最近我們意識到,只需要4個字節,我們必須改變每一列的大小,所以我們必須像這樣運行一個查詢,每列(約6列):何時收縮:縮小一列的大小後還是縮小所有列的大小後?

alter table [HugeTable] alter column [Col] float(1) 

我的問題是:如何什麼時候應該在縮小柱尺寸後回收空間?對於什麼時候我們有兩種可能性的問題:在每個更改表(缺點:需要更長時間)之後,或者在所有列都減少之後。對於我們的想法如何的問題:數據庫收縮,聚簇索引重建。在我們的案例中,DBCC CLEANTABLE也會有用嗎?從我所能理解的情況來看,它僅適用於可變列類型。

謝謝!

編輯:最後我們決定不使用這種方法。相反,我們正在創建一個具有新結構並逐漸移動數據的表格。

回答

0

我會調整所有的列,然後在數據庫上運行維護。在每列調整大小之後不需要執行此操作。

+0

你會建議什麼樣的維護? –

+0

收縮數據庫,重建索引,檢查一致性等所有事情,你可能在每週(?)維護工作...... –

+0

不幸的是,由於數據庫的大小,我們不能定期運行那些:(一致性檢查持續13個小時(!!!),所以我們真的需要儘可能快地保持它。重建索引是否足夠了?我知道縮小並不是完全推薦的 –