Параллельная загрузка сегментов набора данных
В режиме полной загрузки можно ускорить загрузку больших наборов данных, разбив их на сегменты, которые будут загружаться параллельно. Таблицы можно разделить по диапазонам данных, по всем разделам, по всем подразделам или по конкретным разделам.
Каждый сегмент набора данных загружается с помощью отдельной подзадачи. Поэтому, принимая решение о том, как разделить набор данных, всегда необходимо учитывать доступность базы данных и сетевых ресурсов. Разделение таблицы на слишком большое количество сегментов может повлиять на производительность базы данных и перегрузить сеть. Если выбран метод сегментации Диапазоны данных с набором данных, разбитым на разделы, лучше всего настроить диапазоны таким образом, чтобы каждый из них охватывал один или несколько целых разделов. Это ускорит извлечение данных и минимизирует влияние на ресурсы обработки базы данных.
Поддерживаемые источники данных и цели
Задача данных должна быть определена с помощью комбинации следующих коннекторов источника данных и цели.
Поддерживаемые коннекторы для источников данных
- IBM DB2 for LUW
-
IBM DB2 for z/OS
Примечание к информацииСегментация таблиц по разделам или подразделам не поддерживается коннектором источника IBM DB2 for z/OS.
- Microsoft SQL Server (на основе журнала)
- MySQL
- Oracle
-
PostgreSQL
Примечание к информацииСегментация таблиц по разделам или подразделам не поддерживается коннектором источника PostgreSQL.
- SAP (Application)Примечание к информации
Таблицы с конечной точкой источника SAP (Application) по умолчанию зависят от клиента. Столбец MANDT автоматически берется непосредственно из коннектора.
- SAP HANA (Database)
Поддерживаемые коннекторы цели:
- Amazon Redshift
- Amazon S3
- Google Cloud BigQuery
- Google Cloud Storage
- Microsoft Fabric Data Warehouse
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- Snowflake
Настройка параллельной загрузки
Можно разделить таблицу, используя один из двух методов: Диапазоны данных или Разделы. Метод Диапазоны данных разбивает таблицу по диапазонам данных, а метод Разделы разбивает таблицу по разделам.
Использование метода диапазонов данных
Чтобы определить границы сегментов по диапазону данных, выполните следующие действия.
-
На вкладке Наборы данных щелкните меню справа от набора данных и выберите Параметры.
Откроется диалоговое окно Параллельная загрузка.
-
Выберите метод сегментации Диапазоны данных.
-
Щелкните Выбрать столбцы.
Откроется диалоговое окно Столбцы сегментации таблицы.
-
Для всех поддерживаемых источников данных автоматически выбирается столбец уникального индекса. Выберите, какие дополнительные столбцы с данными требуется использовать для разграничения диапазонов, а затем нажмите кнопку OK.
Примечание к информации-
Рекомендуется использовать столбцы, которые не допускают нулевые значения (NULL) и не обновляются во время обычных операций с базой данных источника (например, столбец первичного ключа или столбец даты с фиксированной датой). Использование столбца, который обновляется во время полной загрузки, может привести к появлению дубликатов в целевой базе данных.
-
Рекомендуется использовать индексированные столбцы источника данных, так как это оптимизирует производительность поиска данных.
-
Можно выбрать до десяти столбцов
-
Записи с нулевыми значениями не реплицируются
-
Следующие типы данных нельзя использовать для определения сегментов по диапазонам: DOUBLE, FLOAT и LOB (BLOB, CLOB, NCLOB).
-
-
Щелкните Добавить диапазон данных, чтобы добавить сегмент диапазона данных.
Откроется диалог Добавить диапазон данных с выбранными столбцами.
-
Для каждого столбца укажите верхнюю границу диапазона сегмента.
Примечание к информацииЗначения в столбцах DATE необходимо вводить в формате, поддерживаемом источником. Например, для источника Oracle правильный формат будет следующим:
-
ALTER SESSION SET NLS_DATE_FORMAT:
'YYYY-MM-DD HH24:MI:SS' (также можно указать только YYYY-MM-DD )
-
ALTER SESSION SET NLS_TIMESTAMP_FORMAT:
'YYYY-MM-DD HH24:MI:SS.FF9'
-
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT:
'YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM'
-
-
Нажмите кнопку ОК, чтобы сохранить параметры и закрыть диалоговое окно.
Каждый из выбранных столбцов будет отображаться с указанным диапазоном.
- По необходимости повторите шаги 3-6, чтобы добавить столбцы и диапазоны данных.
- Нажмите кнопку Проверить, чтобы проверить, что введенные данные соответствуют типу данных столбца источника и что все определенные сегменты содержат значения.
При использовании метода Диапазоны данных реплицируются все данные таблицы, даже если диапазоны данных определены не для всех столбцов.
Чтобы отредактировать диапазон данных, выполните следующие действия.
- Щелкните меню в конце строки и выберите Изменить.
- Отредактируйте диапазон данных и нажмите кнопку OK, чтобы сохранить изменения.
Чтобы удалить диапазон данных, выполните следующие действия.
- Щелкните меню в конце строки и выберите Изменить.
- Когда появится запрос на подтверждение действия, нажмите кнопку Удалить.
Пример использования
Предположим, что определены следующие сегменты:
Столбец_1 | Столбец_2 | Столбец_3 |
---|---|---|
10 |
30 |
105 |
20 |
20 |
120 |
100 |
12 |
99 |
В этом случае для каждого сегмента загрузки будут созданы следующие предложения WHERE:
- Сегмент 1:((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
- Сегмент 2:NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
- Сегмент 3:NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 30) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
- Сегмент 4:NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
Использование метода разделов
Можно определить границы сегментов по всем разделам таблицы, всем подразделам таблицы (если источник данных поддерживает подразделы) или конкретным разделам.
- Этот метод можно использовать только в том случае, если набор данных уже разбит на разделы.
- Если есть задача, которая существовала до появления этой функции, и она еще не была запущена, либо требуется параллельно перезагрузить одну или несколько таблиц данных с помощью этого метода, сначала нужно обновить метаданные, как описано в разделе Регистрация данных, которые уже существуют в пределах платформы данных (Процесс обновления метаданных, описанный в этом разделе, одинаков для всех типов задач данных.).
Использование всех разделов
Чтобы определить границы сегментов по всем разделам или подразделам таблицы, выполните следующие действия.
-
На вкладке Наборы данных щелкните меню справа от набора данных и выберите Параметры.
Откроется диалоговое окно Параллельная загрузка.
-
Выберите метод сегментации Разделы.
-
Выберите один из следующих вариантов.
-
Использовать все основные разделы
-
Использовать все подразделы
Примечание к информацииЭтот вариант будет неактивен, если источник данных не поддерживает подразделы.
-
- Нажмите кнопку ОК.
Использование конкретных разделов
Чтобы определить границы сегментов по конкретным разделам, выполните следующие действия.
-
На вкладке Наборы данных щелкните меню справа от набора данных и выберите Параметры.
Откроется диалоговое окно Параллельная загрузка.
-
Выберите метод сегментации Разделы.
-
Выберите Указать разделы.
Примечание к информацииЕсли выбран вариант Указать разделы, то будут реплицированы только указанные разделы.
-
Щелкните Добавить раздел.
Откроется диалоговое окно Добавить раздел.
-
Укажите имя существующего раздела или подраздела.
Если добавляется подраздел, установите флажок Подраздел.
- Нажмите кнопку ОК, чтобы сохранить параметры.
- По необходимости повторите шаги 4-6, чтобы добавить разделы или подразделы.
Чтобы отредактировать раздел, выполните следующие действия.
- Щелкните меню в конце строки и выберите Изменить.
- Отредактируйте информацию о разделе и нажмите кнопку OK, чтобы сохранить изменения.
Чтобы удалить раздел, выполните следующие действия.
- Щелкните меню в конце строки и выберите Изменить.
- Когда появится запрос на подтверждение действия, нажмите кнопку Удалить.
Настройка количества сегментов для параллельной загрузки
Можно увеличить или уменьшить количество сегментов, которые будут загружаться параллельно. Это значение наследуется из поля Полная загрузка > Настройка производительности > Максимальное количество таблиц для параллельной загрузки в настройках задачи данных. Текущее значение отображается в строке «Параллельно можно загружать до <n> сегментов» в диалоговом окне Параллельная загрузка. Увеличение этого числа может повысить производительность, если набор данных разбит на множество сегментов, но при этом увеличится нагрузка на ресурсы базы данных и пропускную способность сети.