【问题标题】:Datastage Heap Size数据阶段堆大小
【发布时间】:2019-08-08 23:13:27
【问题描述】:

你能帮帮我吗,因为我遇到了堆大小的问题。

我正在使用 jdbc 连接器连接到 PostgreSQL 数据库。我的表中有大约 700 万条数据。我必须将堆大小设置为大约 4096 Mb (4 GB),这样我的工作就不会因错误而失败:

java.lang.OutOfMemoryError: Java 堆空间

到目前为止,我还没有找到解决方案,使用 Fetch Size 从这个连接器读取数据,就像 Oracle Array Size 一样。以下是 IBM 在使用 fetch size 时的建议。

  1. 单一查询
  2. 自动提交已禁用
  3. 正确使用字符集和字段长度。

所有都已相应设置,但我们无法正确使用提取大小。我们还使用 java 语言和 fetch size 对其进行了测试,并且它工作正常,所以问题可能不在于驱动程序。

你能和我分享你的经验吗?任何人都有类似的问题,除了增加堆大小之外,您是如何解决的。事实上,我们不想增加堆大小超过这个,我们想让连接器使用中等大小的堆大小而不是使用相当大的堆大小来读取小数据包。

亲切的问候,
Knlix。

【问题讨论】:

    标签: datastage heap-size


    【解决方案1】:

    您可以在此处执行以下操作:

    1. 将事务大小增加到 10,000 并减小数组大小。这将导致创建一个更小的数组,从而节省临时空间。

    2. 使用 APT_NOJOBMON 环境变量。这不会监视作业并节省空间。

    3. 您可以尝试在所需阶段检查正确的分区技术。

    4. 尝试将作业分解为多个作业和作业逻辑。例如:您有一个 SQL 源,它正在提取 700 万条数据。与其在一个作业中提取相同的作业,而是将其分解为多个作业,而是逐块提取数据,然后在必要时进行整合,以便一次完成所有作业,或者简单地让作业一个接一个地运行,以便在每个作业结束时清除临时空间工作。

    5. 如果可能,请管理员增加 datastage spool 空间

    【讨论】:

    • 您好 Sourabh,感谢您的回答,但我们不能进一步破坏这项工作。 700 万是必需的限制,这是因为我们无法在功能上进一步过滤数据。事务大小为 10 000,但不影响输出。
    猜你喜欢
    • 2018-01-29
    • 2019-08-05
    • 2014-01-23
    • 2015-12-09
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多