2013-05-14 42 views
2

我想刪除150 GB表(46億記錄)的varchar(100)列。該列中的所有數據均爲空。數據庫中有30GB的空間。Teradata刪除列返回「沒有更多空間」

當我嘗試刪除列時,它說「沒有更多的數據庫XY空間」。爲什麼這樣的行動需要這麼多空間?

+0

嘗試刪除完全爲空值的varchar(50)列。同樣的結果 – 2013-05-14 09:24:05

+0

你可以發佈表結構嗎?運行下面的sql'show table your_table' – ChrisCamp 2013-05-24 14:55:56

+0

這是商業祕密 – 2013-05-31 09:53:26

回答

0

這可能會發生各種原因。數據庫中的某個AMP可能已滿,這可能會導致該錯誤,即使進行了小的表更改。

嘗試運行下面的SQL查詢空間

select VProc, CurrentPerm, MaxPerm 
from dbc.DiskSpace 
where DatabaseName='XY'; 

也,你應該檢查你的主索引是在這個非常大的表哪一列。如果表格未正確傾斜,則在嘗試更改表格或通過針對該表格運行查詢時,還可能遇到空間問題。

對於其他建議,我發現了一個體面的文章,您可能想要調查什麼樣的事情,當「沒有更多的數據庫空間」錯誤發生時 - Teradata SQL Tutorial。一些建議包括:

  • 丟棄任何中介工作或「沙盒」表
  • 實現單值或者多值壓縮。
  • 丟棄不需要的/不必要二級索引
  • 在像ACCESSLOG或dbql表
  • 刪除DBC表中刪除數據和存檔不再使用舊錶。
+0

所有的AMP都很好,大約有2/3的空間用完,並且平均分配。偏移因子是1 – 2013-05-24 14:33:27