Таблицы передачи SSIS между серверами sql - медленно

Я извлекаю 5 таблиц из SQL-сервера от A до B. Каждое извлечение представляет собой запрос, который объединяет множество таблиц.

Я обычно запускаю эти извлечения в мастере импорта сервера sql. Я поместил их в SSIS (5 параллельных извлечений) сейчас и заметил, что это намного медленнее (по крайней мере, в 50 раз медленнее).

введите здесь описание изображения

Интересно, делаю ли я здесь популярную/лучшую практику? И идея, почему это медленно? Спасибо


Спасибо всем за обсуждение

Я последовал идее JodyT и сгенерировал SSIS из мастера импорта и нашел разницу:

в пункте назначения я должен использовать Table or view - fast load - когда я переключаюсь с Table or view на это, у меня скорость аналогична мастеру импорта. введите здесь описание изображения


person YJZ    schedule 16.08.2019    source источник
comment
Все ли таблицы расположены в одной базе данных (источник?, место назначения?), хранятся ли таблицы в одной файловой группе? Если групп файлов много, расположены ли они на одном жестком диске? Каковы характеристики исходного и целевого серверов?   -  person Hadi    schedule 17.08.2019
comment
Мастер импорта и экспорта создает и выполняет пакет SSIS. Вы можете сохранить этот пакет и проверить его, чтобы увидеть, как импортируются данные.   -  person JodyT    schedule 19.08.2019
comment
Вы измеряете время настенных часов или время процессора (включая ввод-вывод)?   -  person lit    schedule 19.08.2019


Ответы (1)


Как и в случае с любым подобным вопросом, зависит от того, является ли то, что вы делаете, «наилучшей практикой». Ваши запросы на сбор данных — не единственный компонент, который следует учитывать для повышения производительности. Другими факторами, которые следует учитывать, являются:

  1. как намекали другие - ваше оборудование (пункт назначения, источник, промежуточная сеть и т. д.)
  2. ваши данные (общий размер, глубина, ширина)
  3. ваше расписание (это единственное, что работает? Это должно быть сделано в течение заданного окна? и т. д.)

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

Не имея возможности узнать всю эту информацию и принять наилучшее решение, вы МОЖЕТЕ также просто попытаться постепенно увеличить количество потоков. Во-первых, оцените, что означают «быстро» и «медленно» для вашей среды. Когда вы запускаете только один поток, какова скорость передачи (если вы еще не знаете этого, зная аппаратное обеспечение). Затем добавьте еще один поток, переоцените скорость передачи. Затем еще один и так далее до тех пор, пока вы не увидите уменьшение общего времени перемещения данных. Увеличивайте до тех пор, пока не будете знать, что используете оптимальное количество потоков... для вашего оборудования, в вашей сети, в соответствии с вашим графиком для ваших данных.

Здесь вы не получите однозначного ответа (или, по крайней мере, не должны :) ) о том, что для вас «лучше». Слишком много, чтобы поделиться и рассмотреть.

person jamie    schedule 19.08.2019