Поделиться через


Устранение неполадок производительности пакета

Изменения: 15 сентября 2007 г.

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

Проектирование потока данных с повышенной производительностью

Неполадки производительности потока данных в пакетах можно устранять, проверив результаты следующих предложений.

Оптимизация запросов

Многие компоненты потока данных используют запросы как для извлечения данных из источников, так и для операций поиска для создания ссылочных таблиц. По умолчанию запрос использует синтаксис SELECT * FROM <Имя таблицы>. Этот тип запроса возвращает все столбцы исходной таблицы. Тот факт, что все столбцы доступны во время проектирования, делает возможным выбор любого столбца в качестве поискового, сквозного или исходного столбца. Однако после выбора нужных столбцов следует изменить запрос так, чтобы он включал лишь необходимые столбцы. Запрос можно ввести вручную или создать при помощи построителя запросов. Удаление неиспользуемых столбцов делает поток данных пакета более эффективным, поскольку, чем короче строка, тем больше строк может быть загружено в один буфер и тем меньше усилий потребует обработка всех строк набора данных.

ms141031.note(ru-ru,SQL.90).gifПримечание.
При запуске пакета в среде Business Intelligence Development Studio на вкладке «Ход выполнения» конструктора служб SSIS содержатся предупреждения, в том числе и предупреждения о столбцах данных, которые источник поставляет в поток данных, но которые в дальнейшем не используются базовыми компонентами потока данных. Для автоматического удаления таких столбцов можно использовать свойство RunInOptimizedMode.

Настройка свойства задачи «Поток данных»

Можно настроить следующие свойства задачи «Поток данных», влияющие на производительность.

  • Указать местоположение временного хранилища буферных данных (свойство BufferTempStoragePath) и столбцов, содержащих данные объектов типа BLOB (свойство BLOBTempStoragePath). По умолчанию значением этого свойства является значение переменной среды TEMP. Для местоположения временных файлов можно задать другие папки на разных жестких дисках или распределить их по нескольким дискам. Можно указать несколько каталогов, разделяя имена каталогов точками с запятой.
  • Определить размер буфера по умолчанию для задания, установив свойство DefaultBufferSize, и задать максимальное количество строк для каждого буфера, установив свойство DefaultBufferMaxRows. Размер буфера по умолчанию равен 10 МБ, а максимальный размер буфера равен 100 МБ. Максимальное количество строк равно 10 000.
  • Установить число потоков, которые может использовать задача в процессе выполнения, установив свойство EngineThreads. Это свойство рекомендует подсистеме обработки потока данных использовать определенное количество потоков. По умолчанию оно равно 5, минимальное количество потоков равно 2. Тем не менее, подсистема обработки потока данных использует столько потоков, сколько ей требуется, независимо от значения этого свойства. Подсистема обработки потока данных может также использовать больше потоков, чем задано этим свойством, если нужно избежать проблем параллелизма.
  • Указать, следует ли выполнять задачу «Поток данных» в режиме оптимизации (свойство RunInOptimizedMode). Режим оптимизации повышает производительность, удаляя из потока данных неиспользуемые столбцы, выходы и компоненты.
    ms141031.note(ru-ru,SQL.90).gifПримечание.
    Свойство с тем же именем, RunInOptimizedMode, может быть задано на уровне проекта в среде Business Intelligence Development Studio, чтобы указать, что задача «Поток данных» запускается в режиме оптимизации во время отладки. Это свойство переопределяет свойство RunInOptimizedMode задач «Поток данных» во время проектирования.

Основные сведения о методах определения размера буфера задачей «Поток данных»

Подсистема обработки потока данных начинает задачу определения размера буфера, вычисляя предполагаемый размер одной строки данных. Затем она умножает предполагаемый размер строки на значение DefaultBufferMaxRows, чтобы получить предварительное рабочее значение размера буфера.

  • Если результат больше значения DefaultBufferSize, подсистема обработки потока данных уменьшает количество строк.
  • Если результат меньше внутренне вычисляемого минимального размера буфера, подсистема обработки потока данных увеличивает количество строк.
  • Если результат лежит между минимальным размером буфера и значением DefaultBufferSize, подсистема обработки потока данных устанавливает размер буфера как можно ближе к предполагаемому размеру строки, умноженному на значение DefaultBufferMaxRows.

Настройка размера буфера

В начале тестирования задач «Поток данных» используйте значения по умолчанию для свойств DefaultBufferSize и DefaultBufferMaxRows. Включите ведение журналов в задаче «Поток данных» и выберите событие BufferSizeTuning для определения количества строк, содержащихся в каждом буфере.

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

При наличии достаточного объема памяти следует использовать меньшее число больших буферов, а не наоборот. Иначе говоря, производительность можно повысить, уменьшив общее число буферов, необходимых для хранения данных, а также установив как можно большее количество строк данных для одного буфера. Для определения оптимального числа буферов и их размеров, поэкспериментируйте со значениями свойств DefaultBufferSize и DefaultBufferMaxRows, отслеживая уровень производительности и сведения, получаемые событием BufferSizeTuning.

ms141031.note(ru-ru,SQL.90).gifПримечание.
Свойства задач «Поток данных», приведенных в этом разделе, должны устанавливаться отдельно для каждой задачи «Поток данных» в пакете.

Исключение ненужной сортировки

Сортировка является потенциально медленной операцией, поэтому исключение ненужной сортировки может повысить производительность потока данных пакета.

Если источник данных отсортирован в результате того, что запрос SELECT содержал предложение ORDER BY, или в результате того, что данные были вставлены в файл в отсортированном виде, можно задать подсказку о том, что данные уже отсортированы, и опустить преобразование «Сортировка», которое требуется определенными последующими преобразованиями. Например, преобразования «Слияние» и «Соединение слиянием» требуют отсортированных входных данных. Чтобы предоставить подсказку, присвойте свойству IsSorted на выходе восходящего компонента потока данных значение True и укажите столбцы, в которых сортируются данные. Дополнительные сведения см. в разделе Как установить атрибуты сортировки на выходе.

Если данные должны быть отсортированы в потоке данных, производительность потока данных может быть повышена за счет использования минимального количества операций сортировки. Например, если поток данных использует преобразование «Многоадресная доставка» для копирования набора данных, отсортировать набор данных можно однократно перед выполнением преобразования, вместо того чтобы сортировать несколько выходных потоков после его выполнения.

Дополнительные сведения см. в разделах Преобразование «Сортировка», Преобразование «Слияние», Преобразование «Соединение слиянием» и Преобразование «Многоадресная доставка».

Оптимизация преобразования «Медленно изменяющееся измерение»

Мастер медленно изменяющихся измерений и преобразование «Медленно изменяющееся измерение» представляют собой средства общего назначения, которые соответствуют потребностям большинства пользователей. Однако поток данных, формируемый мастером, не оптимизирован с точки зрения производительности.

В преобразовании «Медленно изменяющееся измерение» самыми медленными компонентами обычно являются преобразования «Команда OLE DB», в которых инструкции UPDATE выполняются последовательно к одной строке за раз. Чаще всего производительность преобразования «Медленно изменяющееся измерение» можно повысить, заменив преобразования «Команда OLE DB» компонентами назначения. В компонентах назначения все строки, подлежащие обновлению, сохраняются в промежуточной таблице. После этого можно добавить задачу «Выполнение SQL», которая выполняет единственную инструкцию UPDATE языка Transact-SQL одновременно над всеми строками.

Опытные пользователи могут спроектировать специальный поток данных для обработки медленно изменяющегося измерения, оптимизированный для крупных измерений. Описание и пример применения этого подхода см. в разделе «Сценарий уникального измерения» технического документа Microsoft Проект REAL:методы проектирования средств ETL, применяемых в бизнес-аналитике.

Оптимизация агрегатов в преобразовании «Статистическая обработка»

Преобразование «Статистическая обработка» включает несколько свойств, позволяющих повысить производительность. Если известно точное или приблизительное количество ключевых значений в наборе данных, можно задать значения свойств Keys и KeysScale. Также можно указать точное или приблизительное число ключей, которые обработает преобразование для операции COUNT DISTINCT, задав значения свойств CountDistinctKeys и CountDistinctScale. Задание этих свойств позволит преобразованию избежать реорганизации кэшированных итоговых значений, тем самым повысив производительность.

Если необходимо создать несколько статистических выражений в потоке данных, следует попробовать использовать одно преобразование «Статистическая обработка» вместо создания нескольких. Такой подход, в частности, повысит производительность, если статистические выражения являются подмножествами других статистических выражений, поскольку преобразование сможет оптимизировать внутреннее хранилище и просматривать входящие данные только один раз. Например, если статистическое выражение использует предложение GROUP BY и статистическое выражение AVG, объединение их в одно преобразование может повысить производительность. Однако этот подход применим только в том случае, если память ограничена, поскольку выполнение нескольких статистических выражений в пределах одного преобразования «Статистическая обработка» сериализует операции статистической обработки.

Дополнительные сведения см. в разделе Преобразование «Статистическая обработка».

Настройка регулировки количества буферов в преобразовании «Соединение слиянием»

Преобразование соединения баз данных слиянием включает свойство MaxBuffersPerInput, которое задает максимальное количество буферов, которые могут быть активны для каждого входного потока одновременно. Можно использовать это свойство для настройки объема памяти, который потребляют буферы преобразования, и следовательно, настройки производительности преобразования. Чем большее количество буферов и памяти используется для преобразования, тем выше производительность. Значение по умолчанию для MaxBuffersPerInput равно 5. Такое количество буферов хорошо работает в большинстве сценариев. Для настройки производительности, возможно, понадобится немного изменить это число и попробовать значения 4 или 6. По возможности следует избегать использования слишком маленького количества буферов. Например, установка параметра MaxBuffersPerInput в 1 вместо 5 значительно повлияет на производительность. Кроме того, нельзя присваивать свойству MaxBuffersPerInput значения 0. Оно означает, что регулировка отсутствует, поэтому в зависимости от загрузки данных и количества доступной памяти пакет может не завершиться.

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

Дополнительные сведения см. в разделе Преобразование «Соединение слиянием».

Проверка производительности назначений

Сохранение данных может занять больше времени, чем ожидается. Чтобы определить, вызвана ли низкая скорость недостаточным быстродействием назначения в обработке данных, можно временно заменить назначение преобразованием «Счетчик строк». Если пропускная способность заметно возрастает, вероятнее всего, замедление скорости вызвано назначением, загружающим данные. Дополнительные сведения см. в разделе Преобразование «Подсчет строк».

Контроль производительности пакета

Службы Integration Services включают функции и средства, позволяющие контролировать производительность пакета. Следующие предложения используются для определения частей пакета, в наибольшей степени влияющих на производительность.

Просмотр сведений на вкладке «Выполнение»

Конструктор служб SSIS предоставляет сведения как о потоке управления, так и о потоке данных при запуске пакета в среде Business Intelligence Development Studio. На вкладке Выполнение приводится список задач и контейнеров в порядке выполнения, в том числе время запуска и окончания работы, предупреждения и сообщения об ошибках каждой задачи или контейнера, включая сам пакет. На ней также представлены список компонентов потока данных в порядке выполнения и сведения о ходе выполнения в виде процентов завершения и количества обработанных строк.

Настройка ведения журналов в пакете

Службы Integration Services включают несколько различных регистраторов, позволяющих пакетам вести журналы с данными времени выполнения в файлы различных типов или в SQL Server. Можно разрешить ведение журнала пакетам и объектам пакетов, таким как задачи и контейнеры. Службы Integration Services включают большое количество различных задач и контейнеров, и каждый контейнер или задача содержит собственный набор информативных журнальных записей. Например, пакет, содержащий задачу «Выполнение SQL», может создать запись журнала, содержащую список выполняемых задачей инструкций SQL, включая значения параметров инструкции.

Журнальные записи включают такие сведения, как время начала и завершения работы пакетов и объектов пакетов, что позволяет находить медленно выполняющиеся задачи и контейнеры. Дополнительные сведения см. в разделах Ведение журнала выполнения пакетов, Реализация ведения журналов в пакетах и Пользовательские сообщения для ведения журнала.

Настройка ведения журналов для задач «Поток данных»

Задача «Поток данных» предоставляет много пользовательских записей журнала, которые можно использовать для мониторинга и настройки производительности. Например, можно отслеживать компоненты, вызывающие утечку памяти, или следить за скоростью запуска отдельного компонента. Список пользовательских записей журнала и образец их вывода см. в разделе Задача «Поток данных».

Мониторинг производительности подсистемы обработки потока данных

Службы Integration Services включают набор счетчиков производительности для мониторинга производительности подсистемы обработки потока данных. Например, можно отследить общий объем памяти в байтах, используемый всеми буферами, и проверить, достаточно ли памяти для компонентов. Буфер является блоком памяти, который используется компонентом для сохранения данных. Дополнительные сведения см. в разделе Мониторинг производительности подсистемы обработки потока данных.

См. также

Задачи

Устранение неполадок при разработке пакета

Основные понятия

Устранение неполадок выполнения пакетов
Устранение неполадок службы Integration Services

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

15 сентября 2007 г.

Изменения
  • Добавлен новый раздел об оптимизации преобразования «Медленно изменяющееся измерение».

17 июля 2006 г.

Изменения
  • Добавлены новые разделы по настройке производительности назначений и способах использования журналов.

5 декабря 2005 г.

Изменения
  • Добавлен раздел о регулировке размеров буфера для преобразования соединения слиянием.