Sql Teradata Drop列返回带“quot;“没有空间了”;

Sql Teradata Drop列返回带“quot;“没有空间了”;,sql,teradata,Sql,Teradata,我试图删除一个150GB表(46亿条记录)的varchar(100)列。此列中的所有数据均为空。我在数据库中还有30GB的空间 当我试图删除该列时,它会显示“数据库XY中没有更多空间”。为什么这样的行动需要这么大的空间 发生这种情况的原因多种多样。数据库中的一个AMP可能已满,这将导致该错误,即使对表进行了较小的更改 尝试运行以下SQL以检查空间 select VProc, CurrentPerm, MaxPerm from dbc.DiskSpace where DatabaseName=

我试图删除一个150GB表(46亿条记录)的varchar(100)列。此列中的所有数据均为空。我在数据库中还有30GB的空间


当我试图删除该列时,它会显示“数据库XY中没有更多空间”。为什么这样的行动需要这么大的空间

发生这种情况的原因多种多样。数据库中的一个AMP可能已满,这将导致该错误,即使对表进行了较小的更改

尝试运行以下SQL以检查空间

select VProc, CurrentPerm, MaxPerm 
from dbc.DiskSpace 
where DatabaseName='XY';
此外,您应该检查主索引在这个非常大的表中的列。如果表未正确倾斜,则在尝试更改表或对其运行查询时,也可能会遇到空间问题

对于其他建议,我发现了一篇关于“数据库中没有更多空间”错误发生时您可能需要调查的内容的文章-。其中一些建议包括:

  • 删除任何中间工作或“沙盒”表
  • 实现单值或多值压缩
  • 删除不需要/不必要的辅助索引
  • 删除dbc表(如accesslog或dbql表)中的数据
  • 删除并归档不再使用的旧表
ALTER TABLE语句在覆盖原始表之前,需要临时存储修改后的版本。我猜您试图更改的表至少占用了总存储大小的1/3

尝试删除一个具有完全空值的varchar(50)列。同样的结果你能发布表格结构吗?运行以下sql
show table您的_table
它是一个business Sectis数据库
XY
该表所在的数据库?与
SUM(MaxPerm)
相比,
DBC.DiskSpace
为数据库
XY
报告的
SUM(PeakPerm)
是多少?系统总体上有多少可用空间?(考虑瞬态日志要求)所有的放大器都很好,大约2/3的空间被占用,并且分布均匀。我们也注意到了倾斜因素。看起来Teradata在更改(而不仅仅是删除)列时创建了表的副本。