#datastage #heap-size
#хранилище данных #размер кучи
Вопрос:
Не могли бы вы, пожалуйста, помочь мне, потому что я застрял с проблемой размера кучи.
Я использую соединитель jdbc для подключения к базе данных PostgreSQL. В моей таблице около 7 миллионов данных. Мне пришлось установить размер кучи около 4096 Мб (4 ГБ), чтобы моя работа не завершилась ошибкой:
java.lang.Ошибка OutOfMemoryError: пространство кучи Java
Пока я не нашел решения для чтения данных из этого соединителя, используя размер выборки, точно такой же, как размер массива Oracle. Смотрите ниже рекомендации IBM при использовании размера выборки.
- Один запрос
- Автоматическая фиксация отключена
- Правильное использование кодировки и длины полей.
Все задано соответствующим образом, но мы не можем правильно использовать размер выборки. Мы также протестировали это, используя язык Java и размер выборки, и это сработало, поэтому проблема может быть не в драйвере.
Можете ли вы, ребята, поделиться со мной своим опытом? У кого-нибудь были похожие проблемы, как вы их решили, кроме увеличения размера кучи. На самом деле мы не хотим увеличивать размер кучи больше этого, мы хотели бы заставить соединитель считывать небольшие пакеты данных, используя умеренный размер кучи, вместо того, чтобы использовать довольно большой размер кучи.
С уважением,
Knlix.
Ответ №1:
Здесь вы можете сделать следующее:
-
Увеличьте размер транзакции до 10 000 и уменьшите размер массива. Это привело бы к созданию меньшего массива, что позволило бы сэкономить временное пространство.
-
Используйте переменную APT_NOJOBMON env. Это не позволит отслеживать задание и экономить место.
-
Вы можете попробовать проверить правильность методов разбиения на разделы на необходимых этапах.
-
Попробуйте разбить задание на несколько заданий и логику задания. Например: у вас есть SQL в исходном коде, который обрабатывает 7 миллионов данных. Вместо того, чтобы извлекать одно и то же в одном задании, разбивайте его на несколько заданий, извлекайте данные фрагмент за фрагментом, позже интегрируйте, если необходимо, чтобы выполнить все сразу, или просто позвольте заданиям выполняться одно за другим, чтобы временное пространство очищалось в конце каждого задания.
-
Если возможно, попросите администратора увеличить пространство буфера хранения данных
Комментарии:
1. Привет, Сурабх, спасибо за твой ответ, но мы не можем дальше прерывать эту работу. 7 миллионов — это требуемый предел, это потому, что мы не можем фильтровать данные дальше функционально. Размер транзакции равен 10 000, но это не влияет на выходные данные.