Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS. Data Flow Task  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
Wello World!
В SSIS пакете есть элемент Data Flow Task, с именем UPP, который переливает данные из одной таблицы в другую.
Таблицы находятся на разных серверах. Скорость вставки 5-10 записей в секунду.

К сообщению приложен файл. Размер - 61Kb
11 июл 17, 15:34    [20633931]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
Ради эксперимента настрои Link между серверами. Используя скрипт, за 7 сек выполнил туже операцию.

INSERT [tmp].[МестаХраненияСклад_Relation]([System_Key],[Product_ID],[Warehouse_ID],[Зона])
SELECT	1, * FROM		N01000043.[upp_dwh_metadata].[etl].[МестаХранения]


Вопрос: Как можно повысить производительность используя Data Flow Task?
11 июл 17, 15:34    [20633939]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Мы вас поздравляем. Вопрос-то в чем?
11 июл 17, 15:35    [20633940]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
В дополнение...
Во време выполнения Data Flow Task, профайлером отловил соответствующий запрос:

INSERT [tmp].[МестаХраненияСклад_Relation]([System_Key],[Product_ID],[Warehouse_ID],[Зона]) 
VALUES(@Param000004,@Param000005,@Param000006,@Param000007)
11 июл 17, 15:38    [20633967]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Yagrus2
В дополнение...
Во време выполнения Data Flow Task, профайлером отловил соответствующий запрос:

INSERT [tmp].[МестаХраненияСклад_Relation]([System_Key],[Product_ID],[Warehouse_ID],[Зона]) 
VALUES(@Param000004,@Param000005,@Param000006,@Param000007)

Ну так вот так и работает перегонка записей через SSIS DF, отсюда и ноги ваших тормозов растут.
11 июл 17, 15:45    [20634024]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
msLex
Member

Откуда:
Сообщений: 8066
Используйте bulk при заливки в destination
11 июл 17, 15:47    [20634044]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
vborets
Member

Откуда:
Сообщений: 164
Yagrus2,

Так вместо Data Flow Task
используй тот же Execute SQL Task с твоим скриптом
11 июл 17, 15:49    [20634059]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
Если идти по пути BULK INSERT, подскажите как его использовать, если SOURCE - SQL таблица?
11 июл 17, 15:55    [20634089]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
vborets,
Мне нужно обойтись без линка.
11 июл 17, 15:55    [20634093]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Yagrus2
vborets,
Мне нужно обойтись без линка.

может поможет
11 июл 17, 15:56    [20634099]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
Руслан Дамирович
Yagrus2
В дополнение...
Во време выполнения Data Flow Task, профайлером отловил соответствующий запрос:

INSERT [tmp].[МестаХраненияСклад_Relation]([System_Key],[Product_ID],[Warehouse_ID],[Зона]) 
VALUES(@Param000004,@Param000005,@Param000006,@Param000007)

Ну так вот так и работает перегонка записей через SSIS DF, отсюда и ноги ваших тормозов растут.


Раньше им всегда пользовался и таких проблем не наблюдал. Это основная фишка SSIS и мне неверится, что Data Flow Task, такой кривой.
11 июл 17, 15:57    [20634106]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
msLex
Member

Откуда:
Сообщений: 8066
Yagrus2
Если идти по пути BULK INSERT, подскажите как его использовать, если SOURCE - SQL таблица?

Еще раз...

выставь свойство BULK у DESTINATION

в зависимости от типа destination-а оно называется по разному.
для ADO Net Destination - это "галочка" use bulk insert when possible
11 июл 17, 15:59    [20634110]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Yagrus2
Раньше им всегда пользовался и таких проблем не наблюдал... и мне неверится, что Data Flow Task, такой кривой.

Ну да, обычно-то руки не из того места растут. А потом ж-опыт приходит...
Вот, посмотрите статью, там и сравнение, и настройки разные
11 июл 17, 16:00    [20634113]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4712
Yagrus2
vborets,
Мне нужно обойтись без линка.


1) Включите FAST LOAD
2) Включите TABLOCK
3) Выключите CHECK CONSTRAINT
4) Убедитесь, что у вас не включен Serializable уровень изоляции или распределенная транзакция

Опционально: сделайте destination INMEMORY
11 июл 17, 16:04    [20634135]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
a_voronin,
Спасибо!
Помогла настройка: Data access mode в Table or view - fast load
11 июл 17, 16:32    [20634263]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Alex_496
Member [заблокирован]

Откуда: https://www.dvbi.ru
Сообщений: 3869
a_voronin
Yagrus2
vborets,
Мне нужно обойтись без линка.


1) Включите FAST LOAD
2) Включите TABLOCK
3) Выключите CHECK CONSTRAINT
4) Убедитесь, что у вас не включен Serializable уровень изоляции или распределенная транзакция

Опционально: сделайте destination INMEMORY


список ускорений можно продолжить как минимум еще пункта на 4
11 июл 17, 20:43    [20634865]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
msLex
Member

Откуда:
Сообщений: 8066
Alex_496,

Так не стесняйтесь, расширти
11 июл 17, 20:56    [20634881]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
bideveloper
Member

Откуда:
Сообщений: 503
автор
SELECT 1, * FROM N01000043.[upp_dwh_metadata].[etl].[МестаХранения]


1. выбирать из таблицы источника только нужные поля
11 июл 17, 21:59    [20635030]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
a_voronin
2) Включите TABLOCK
имхо больше профита возможно получить отключив таки таблок и заливаясь в несколько потоков параллельно
11 июл 17, 22:07    [20635049]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Alex_496
Member [заблокирован]

Откуда: https://www.dvbi.ru
Сообщений: 3869
по-прежнему +4
11 июл 17, 22:14    [20635061]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Дедушка
a_voronin
2) Включите TABLOCK
имхо больше профита возможно получить отключив таки таблок и заливаясь в несколько потоков параллельно
Хм, вообще то этот таблок запрещает обычные обновления/вставки, но не запрещает bulk, так что его можно и нужно ставить, если распараллеливать загрузку.
11 июл 17, 22:39    [20635113]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 553
Дедушка
a_voronin
2) Включите TABLOCK
имхо больше профита возможно получить отключив таки таблок и заливаясь в несколько потоков параллельно


В SSIS при указанном выше подходе это не сработает. SQL Parallel Insert - это команда вида
INSERT ... WITH (TABLOCK) SELECT ...
, а SSIS Data Destination выдает команду
INSERT ...
или
INSERT BULK
. Если делать несколькими Data Dest в параллель - будут блокировки, так как это разные подключения к БД.
Хотим делать parallel inserts в SSIS - делаем это через Execute SQL Command.
2 авг 17, 11:31    [20694283]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Data Flow Task  [new]
человек_ниоткуда
Guest
Yagrus2,

SSIS пакет работает на источнике? ... на цели (сервере куда вставляете)? ... на третьем сервере?

PS: Вы же понимаете что SSIS зожрёт данные в себя (в память сервака, где крутится), а потом их плюнет в целевой сервер!
2 авг 17, 13:22    [20694776]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить