Netezza 错误数据分区已满 - 多次调用存储过程时

Netezza Error Data partition is full - When calling a Stored Procedure multiple times

我在一个循环中多次调用一个过程,当我运行它4次时没有问题,但如果我运行它超过4次,我得到以下错误:

数据分区已满。

我在查询中使用分布键,就像以下网站中建议的那样: https://www.ibm.com/developerworks/community/forums/html/topic?id=35763b32-b40f-4178-8923-0b39edff7c7c

调用函数的代码如下:

FOR i in  0 .. N
     LOOP
          CALL FUNCTION_X(last_day(ADD_MONTHS(DATE_VAR, i)));
     END LOOP;

我想知道是否有一种方法,例如,在每次调用之后可以执行某种内存刷新或其他操作以消除该错误...

如果你只需要执行那个函数(或者它真的是一个存储过程???)4次,然后它就会填满一个磁盘,有两个选择:

1) 你的系统在至少一个数据片上总是 99.9% 满,你需要释放一些 space(删除表,重新分区 and/or '全部记录)表) 2) 该函数内部发生了很多事情,导致数据切片 运行 已满。尝试注释掉其中的大部分代码以进行“二进制搜索”以定位问题然后返回给我们

这就是我解决它的方法,现在我对它的功能 运行 进行了 18 次测试。 我只在调用函数后使用了一个 Commit。这是代码:

FOR i in  0 .. N
    LOOP
         CALL FUNCTION_X(last_day(ADD_MONTHS(DATE_VAR, i)));
         COMMIT;   
    END LOOP;

希望对遇到此错误的任何人有所帮助。