teradata中no more spool space

teradata中no more spool space
刚上线的TD跑批作业,有些会报“no more spool space”这样的错误,开发人员第一反应,分配的数据库空间不足了。

其实基本都是跑批作业程序本身问题。

先要解决这个问题,得先了解下什么是spool空间。

TD数据库平台有三类空间,分别是:

PERM:用户用于存放永久性数据的磁盘空间。每一个数据库在创建时,都会预分配存储空间。

SPOOL:用于存放各类请求运行过程中所产生的中间结果集的空间。在创建每一个TD用户时,都会分配一个限额。

TEMP:用于存放TEMPORARY表数据的空间。在创建每一个TD用户时,都会分配一个限额。

其中SPOOL是磁盘临时表空间,用于在查询处理期间保存中间行,以及保存事务的应答集中的行。

由于TD数据库的特性,加入分配了200G的临时表空间,在具有24个AMPS上系统上,每个AMP上大概分配了,大约8.3G临时空间。

由于上述的这个特性,很容易猜到出现no more spool space这个原因之一是:

1).表的PI设计不当,数据严重倾斜,导致数据集中在某个AMP上过多,超出了这个8.3G的空间限制。

另外一个常见原因是:

2).表关联时,关联条件写错。出现笛卡尔积,产生大量无用的结果集,超过了临时空间限制。

还有就是产生的临时表数据确实太大超过了限制,不过这个很少出现。

遇到这个错误,就要具体分析问题,针对是哪种情况具体解决了。

可以通过:SELECT DISTINCT 或者SELECT/GROUP BY查询中间结果集来具体确定问题。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值