Оптимизация приемников

Когда потоки данных записывают данные в приемники, любое пользовательское секционирование будет выполняться непосредственно перед записью. Как для источника, в большинстве случаев рекомендуется выбрать параметр секционирования Использовать текущее секционирование. Секционированные данные записываются значительно быстрее, чем несекционированные данные, даже если их место назначения не секционировано. Ниже приведены отдельные рекомендации для различных типов приемников.

Приемники Базы данных SQL Azure

При использовании Базы данных SQL Azure в большинстве случаев эффективно работает секционирование по умолчанию. Существует вероятность, что в приемнике окажется слишком много секций для обработки Базой данных SQL. В этом случае сократите число секций, выводимых приемником Базы данных SQL.

Рекомендации по удалению строк в приемнике на основе отсутствующих строк в источнике

В этом видео описывается использование потоков данных с преобразованиями EXISTS, ALTER ROW и SINK для достижения этого общего шаблона:

Влияние обработки строк с ошибками на производительность

Если включить обработку строк с ошибками (параметр "Продолжать при ошибке") для преобразования приемника, служба будет выполнять дополнительный шаг перед записью совместимых строк в таблицу назначения. Этот дополнительный шаг немного снизит производительность (до 5 %). Кроме того, производительность дополнительно уменьшится, если включить параметр для регистрации в журнале несовместимых строк.

Отключение индексов с помощью сценария SQL

Отключение индексов перед загрузкой в Базу данных SQL может значительно повысить производительность записи в таблицу. Выполните приведенную ниже команду перед записью данных в приемник SQL.

ALTER INDEX ALL ON dbo.[Table Name] DISABLE

После завершения записи перестройте индексы с помощью следующей команды:

ALTER INDEX ALL ON dbo.[Table Name] REBUILD

Обе эти операции могут выполняться с помощью собственных сценариев SQL предварительной и последующей обработки в Базе данных SQL Azure или приемнике Synapse в потоках данных для сопоставления.

Disable indexes

Предупреждение

При отключении индексов поток данных берет на себя управление базой данных, поэтому запросы в этот период вряд ли будут выполняться успешно. Чтобы избежать этого конфликта, многие задания ETL активируются в середине ночи. Чтобы узнать больше, ознакомьтесь с ограничениями для отключения SQL-индексов.

Масштабирование базы данных

Запланируйте изменение размеров Базы данных SQL Azure и Хранилища данных SQL Azure, выступающих в роли источника и приемника, перед выполнением конвейера, чтобы увеличить пропускную способность и минимизировать регулирование Azure по достижении ограничений DTU. После завершения выполнения конвейера восстановите нормальные размеры баз данных.

Приемники Azure Synapse Analytics

При записи в Azure Synapse Analytics убедитесь, что для параметра Включить промежуточный режим задано значение True. Это позволит службе записывать данные с помощью команды SQL COPY, которая эффективно загружает данные в пакетном режиме. При использовании промежуточного процесса необходимо указать учетную запись Azure Data Lake Storage 2-го поколения или Хранилища BLOB-объектов Azure для промежуточного хранения и обработки данных.

Помимо промежуточного процесса, аналогичные рекомендации для Базы данных SQL Azure применимы и к Azure Synapse Analytics.

Приемники на основе файлов

Хотя потоки данных поддерживают различные типы файлов, рекомендуется использовать собственный формат Spark, Parquet, чтобы обеспечить оптимальное время чтения и записи.

Если данные распределены равномерно, параметр Использовать текущее секционирование обеспечит самое быстрое секционирование для записи файлов.

Параметры имени файла

При записи файлов можно выбрать параметры именования, которые влияют на производительность.

Sink options

Выбор параметра По умолчанию обеспечит наиболее быструю запись. Каждая секция будет эквивалентна файлу с именем по умолчанию Spark. Это удобно, если просто выполняется чтение из папки данных.

Если настроить шаблон именования, то каждому файлу секции будет присвоено более понятное имя. Эта операция выполняется после записи и немного снижает производительность по сравнению со значением по умолчанию.

Можно вручную присвоить имя каждой отдельной секции.

Если столбец соответствует желаемому способу вывода данных, можно выбрать параметр Именование файла как данных столбца. Это приведет к перешиванию данных в случайном порядке и может повлиять на производительность, если столбцы распределены неравномерно.

Если столбец соответствует желаемому способу именования папок, можно выбрать параметр Именование папки как данных столбца.

Вывод в отдельный файл позволяет объединить все данные в одну секцию. Это увеличит длительность записи, особенно для больших наборов данных. Этот вариант настоятельно не рекомендуется использовать без явной бизнес-причины.

Приемники Azure Cosmos DB

В случае записи в Azure Cosmos DB изменение пропускной способности и размера пакета во время выполнения потока данных может повысить производительность. Эти изменения вступают в силу только на время выполнения действия потока данных, а после его завершения возвращаются исходные параметры сбора.

Размер пакета. Обычно, чтобы приступить к работе, достаточно размера пакета по умолчанию. Чтобы более точно настроить это значение, вычислите приблизительный размер объекта данных и убедитесь, что произведение размера объекта и размера пакета меньше 2 МБ. Если их произведение больше, увеличьте размер пакета, чтобы повысить пропускную способность.

Пропускная способность. Задайте более высокую пропускную способность, чтобы документы быстрее записывались в Azure Cosmos DB. Имейте в виду, что чем выше пропускная способность, тем выше стоимость ЕЗ.

Бюджет на пропускную способность записи. Используйте значение меньше общего количества ЕЗ в минуту. Если у вас есть поток данных с большим количеством секций Spark, настройка бюджета пропускной способности позволит сбалансировать эти секции.

Дальнейшие действия

Ознакомьтесь с другими статьями о производительности потоков данных.