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

Откуда:
Сообщений: 314
Всем привет, прошу помощи. MSSQL 2016 enterprise.
Ситуация такова:
Есть процесс ETL (SSIS), который грузит данные в промежуточную область, затем актуализирует хранилище данных. Сама актуализация представляет собой удаление в DWH всех references затем выполняется множество операций удаления и вставок большого объема данных, в завершении создание references (удаленных на первом этапе). Все это делается в ОДНОЙ транзакции, для возможности отката в случае наличия исключения на любом этапе актуализации.
Очень хочу сократить время обработки DWH, версия и редакция MSSQL позволяет использовать truncate секций, но особого выигрыша от delete с флагом блокировки нет (сократил порядка 20% времени, но этого мало).
На ум приходит только два варианта:
1. По сути актуальный бэкап есть всегда (до старта ETL) – отказаться от транзакции и лить все в потоках в разные таблицы, затем включение references. В случае наличия исключения восстановление из бэкапа.
2. Делать SnapShot, все тоже самое что и в первом пункте, но восстановление из SnapShot.
Время для создания SnapShot в достатке, его буду делать параллельно с задачей загрузки в промежуточную область.

На сколько жизненный подход на практике? или есть более грамотные подходы в данной задаче? C SnapShot'ами ранее не имел практики, всегда есть актуальный бэкап, по этому восстановление не проблема.
19 апр 17, 12:33    [20413973]     Ответить | Цитировать Сообщить модератору
 Re: ETL сократить время.  [new]
aleks2
Guest
1. Не надо делать "множество операций удаления и вставок большого объема данных". Надо, по возможности, делать update/merge.
2. Я не ведаю, что значит "DWH", наверное, что-то важное и нужное...
3. Сделайте копию хранилища(два хранилища). Обновляйте копию.
4. Потом подсовывайте вместо актуального.
5. На следующий день повторяете со вторым.
19 апр 17, 12:47    [20414048]     Ответить | Цитировать Сообщить модератору
 Re: ETL сократить время.  [new]
IDVT
Member

Откуда:
Сообщений: 314
aleks2
3. Сделайте копию хранилища(два хранилища). Обновляйте копию.
4. Потом подсовывайте вместо актуального.
5. На следующий день повторяете со вторым.

Возможно я не совсем уловил смысла... к примеру, если я засрал копию хранилища (целью является уйти от актуализации в одной транзакции), то ее нужно ресторить же. Тогда чем это будет отличаться от предложенного мною первого варианта, за исключением снижения риска потери данных предшествующей обработки (в случае битого бэкапа, хотя VerifyOnly поможет)?
19 апр 17, 13:55    [20414478]     Ответить | Цитировать Сообщить модератору
 Re: ETL сократить время.  [new]
aleks2
Guest
IDVT
aleks2
3. Сделайте копию хранилища(два хранилища). Обновляйте копию.
4. Потом подсовывайте вместо актуального.
5. На следующий день повторяете со вторым.

Возможно я не совсем уловил смысла... к примеру, если я засрал копию хранилища (целью является уйти от актуализации в одной транзакции), то ее нужно ресторить же. Тогда чем это будет отличаться от предложенного мною первого варианта, за исключением снижения риска потери данных предшествующей обработки (в случае битого бэкапа, хотя VerifyOnly поможет)?


Если ты посрал, зараза, дерни ручку унитаза.
Если ручки нету той - протолкни г-но рукой.

ЗЫ. Ну засрал ты копию. Ничо не делай. Обновляй ЭТУ же копию снова.
На то она и "копия", что ее не жалко.
19 апр 17, 14:04    [20414566]     Ответить | Цитировать Сообщить модератору
 Re: ETL сократить время.  [new]
IDVT
Member

Откуда:
Сообщений: 314
aleks2
IDVT
пропущено...

Возможно я не совсем уловил смысла... к примеру, если я засрал копию хранилища (целью является уйти от актуализации в одной транзакции), то ее нужно ресторить же. Тогда чем это будет отличаться от предложенного мною первого варианта, за исключением снижения риска потери данных предшествующей обработки (в случае битого бэкапа, хотя VerifyOnly поможет)?


Если ты посрал, зараза, дерни ручку унитаза.
Если ручки нету той - протолкни г-но рукой.

ЗЫ. Ну засрал ты копию. Ничо не делай. Обновляй ЭТУ же копию снова.
На то она и "копия", что ее не жалко.
=) что то я туплю... мысли вокруг гуляют, да около! Спасибо, отличный вариант!!!
19 апр 17, 14:26    [20414717]     Ответить | Цитировать Сообщить модератору
 Re: ETL сократить время.  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33977
Блог
IDVT
Все это делается в ОДНОЙ транзакции


и последовательно?
отказывайте от такого подхода
19 апр 17, 18:33    [20416194]     Ответить | Цитировать Сообщить модератору
 Re: ETL сократить время.  [new]
IDVT
Member

Откуда:
Сообщений: 314
Критик
IDVT
Все это делается в ОДНОЙ транзакции


и последовательно?
отказывайте от такого подхода

Именно, согласен это не целесообразно.
20 апр 17, 08:14    [20417131]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить