Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые форумчане. Пытаюсь распараллелить пакет, но получаю следующие ошибки Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Пытался нарыть информацию на форумах, но ничего не помогло. MSDTC включена. Если переделать на последовательно выполнение, то все выполняется без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 08:54 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey ZarodovMSDTC включена.А вам нужно всё выполнять в одной распределённой транзакции? Если нет, то, может, установить TransactionOption в NotSupported? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:53 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
alexeyvg, да, нужно, т.к. если в любом из блоков появляется ошибка, требуется откатить все предыдущие шаги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 10:00 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovalexeyvg, да, нужно, т.к. если в любом из блоков появляется ошибка, требуется откатить все предыдущие шаги. Пишите в промежуточные таблицы и последним шагом делайте switch/merge. Обычно это проще и надежнее, чем распределенные транзакции настраивать и поддерживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 10:38 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovalexeyvg, да, нужно, т.к. если в любом из блоков появляется ошибка, требуется откатить все предыдущие шаги. Похоже, что оба сбойных блока - "Shift LeasingContracts" и "Shift LoanContracts" - используют или ссылаются на одну таблицу. Если не переделывать все на использование merge, попробуйте компромиссный вариант - установить "Shift LeasingContracts" и "Shift LoanContracts" последовательно, а дальнейшие шаги - параллельно как в текущем варианте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 10:47 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, а в чем профит? Это итак загрузка из staging area в целевую базу. Проблема в том, что в промежуточной базе могут содержаться ошибки, которые заранее неизвестны. Параллельность предполагал использовать для ускорения загрузки данных, т.к. некоторые таблицы не зависят друг от друга, но вот первые таблицы должны быть загружены последовательно для генерации суррогатных ключей. Ну хорошо, перегружу я их в промежуточные (опять же, последовательно одну за другой, несмотря на то, что многие друг от друга не зависят, но зависят от первых сущностей). Дальше что? Последовательно перегружать в целевую базу? Но с таким успехом я могу не использовать еще один промежуточный, а просто последовательно грузить из Staging Area в целевую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 10:50 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovtarrus, а в чем профит? Это итак загрузка из staging area в целевую базу. Проблема в том, что в промежуточной базе могут содержаться ошибки, которые заранее неизвестны. Параллельность предполагал использовать для ускорения загрузки данных, т.к. некоторые таблицы не зависят друг от друга, но вот первые таблицы должны быть загружены последовательно для генерации суррогатных ключей. Ну хорошо, перегружу я их в промежуточные (опять же, последовательно одну за другой, несмотря на то, что многие друг от друга не зависят, но зависят от первых сущностей). Дальше что? Последовательно перегружать в целевую базу? Но с таким успехом я могу не использовать еще один промежуточный, а просто последовательно грузить из Staging Area в целевую. Ну самый главный профит, что данные доступны и консистентны даже во время загрузки. Измерения все равно будут грузиться раньше фактов, как ты не крути. Как может помочь транзакция я не понимаю, если честно. А грузить всё в транзакции это большой риск. Грузить несколько часов, чтобы потом откатить все из-за последней записи в посдедней таблице. Ну не знаю... Довольно распространенная практика вместо физических таблиц фактов иметь вьюхи с джойнами по бизнес-ключам. Но тут нужно смотреть на сценарии использования этих фактов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:01 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, как я писал, транзакция нужно только потому, что при любой ошибке в любом из блоков нужно откатить все, что было залито до ошибки. Только по этой причине используется транзакция. Если есть альтернативные варианты, то подскажите, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:05 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovtarrus, Ну хорошо, перегружу я их в промежуточные (опять же, последовательно одну за другой, несмотря на то, что многие друг от друга не зависят, но зависят от первых сущностей). Дальше что? Последовательно перегружать в целевую базу? Но с таким успехом я могу не использовать еще один промежуточный, а просто последовательно грузить из Staging Area в целевую. Последний шаг с switch/merge обычно в десятки или сотни раз короче. Если это только свитчи, то вообще несколько милисекунд. Поэтому мгновенно или почти мгновенно получается новая версия данных. Очень удобно на мой взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:06 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovtarrus, как я писал, транзакция нужно только потому, что при любой ошибке в любом из блоков нужно откатить все, что было залито до ошибки. Только по этой причине используется транзакция. Если есть альтернативные варианты, то подскажите, пожалуйста. Так смысл транзакции в полном откате, а не до ошибки. Как транзакция определит, что вот эта часть хорошая, а вот эта плохая? Тем более при параллельной загрузку понятие "до ошибки" тоже не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:08 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrusAlexey Zarodovtarrus, как я писал, транзакция нужно только потому, что при любой ошибке в любом из блоков нужно откатить все, что было залито до ошибки. Только по этой причине используется транзакция. Если есть альтернативные варианты, то подскажите, пожалуйста. Так смысл транзакции в полном откате, а не до ошибки. Как транзакция определит, что вот эта часть хорошая, а вот эта плохая? Тем более при параллельной загрузку понятие "до ошибки" тоже не ясно. Сорри, не верно прочитал ваше сообщение. Промежуточные таблицы имитируют транзакцию, но оставляют вам шанс на "дозагрузку" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:10 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, в общем и целом, я понял смысл, но у меня остается один вопрос. Как быть с суррогатными ключами, которые генерятся автоматически (identity). Если я воспользуюсь промежуточными таблицами, залью в них, то как перенести данные в целевую с сохранением суррогатных ключей? Иначе мне снова придется привязывать таблицы измерений, чтобы получить вновь созданные ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:17 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovtarrus, в общем и целом, я понял смысл, но у меня остается один вопрос. Как быть с суррогатными ключами, которые генерятся автоматически (identity). Если я воспользуюсь промежуточными таблицами, залью в них, то как перенести данные в целевую с сохранением суррогатных ключей? Иначе мне снова придется привязывать таблицы измерений, чтобы получить вновь созданные ключи. Не добавляйте свойство identity в целевых таблицах. Просто и всё при мердже. Если будете переключать партиции, то там вообще это не важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:25 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, но таким образом придется генерить его уже своими силами, правильно я понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:28 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovtarrus, но таким образом придется генерить его уже своими силами, правильно я понимаю? А полностью все таблицы заливаете или инкрементно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:39 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodov, на картинке у Вас не параллельный пакет. В параллельном потоки между источником и получателем независимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:00 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, Вы это сделайте лучше отдельными пакетами,а макропоследовательность выполнения определяйте шагами джоба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:03 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, инкрементно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:35 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, речь была о Control Flow Parallelism. https://www.dynamics101.com/ssis-parallel-processing/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:38 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey ZarodovВладислав Колосов, речь была о Control Flow Parallelism. https://www.dynamics101.com/ssis-parallel-processing/ Все верно. Один пакет - одна целевая таблица. В мастер пакете определяется воркфлоу. Пакеты - монстры, когда всё в одном очень неудобно обслуживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:43 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, в Staging Area попадают измененные данные за день из источников. Далее эти данные перезаливаются в хранилище. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:44 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovtarrus, инкрементно. Можно генерировать ключи в промежуточной таблице и при мердже по бизнес-ключу их же и переносить. Только после truncate промежуточной таблицы первое значение для identity нужно перенастраивать на большее чем уже есть в основной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:47 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, т.е. я могу сделать на каждую целевую таблицу отдельный пакет и отдельную промежуточную таблицу. Плюс пакет Merge/Switch (его можно в транзакции на случай ошибок). Далее в мастер пакете уже выполняю всех их? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:48 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
tarrus, интересный совет, спасибо, обмозгую на выходных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:49 |
|
||
|
Параллельное выполнение SSIS пакета
|
|||
|---|---|---|---|
|
#18+
Alexey Zarodovtarrus, т.е. я могу сделать на каждую целевую таблицу отдельный пакет и отдельную промежуточную таблицу. Плюс пакет Merge/Switch (его можно в транзакции на случай ошибок). Далее в мастер пакете уже выполняю всех их? Да, в общих чертах всё верно. Дальше шаги вправо и влево в зависимости от потребностей бизнеса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:54 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1689012]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 382ms |

| 0 / 0 |
