2016-11-27 2 views
1

Я создал ETL, который вырос, чтобы заполнить около 250 таблиц (столы, таблицы размеров и таблицы фактов).Службы интеграции SQL Server - исключение из памяти

Я получил шаблон дизайна ETL от Stacia Meisner, ее шаблон проектирования ETL был основан на создании пакета шаблонов для загрузки промежуточной таблицы, загрузки таблицы измерений, а затем для загрузки таблицы фактов. Идея состоит в том, чтобы использовать переменные, которые вы задали в определенном пакете, которые затем вызывают соответствующие хранимые процедуры, создают данные линии и аудита, заполняют правильные таблицы и т. Д., Используя выражения, так что вы просто копируете и вставляете пакет шаблонов в свое решение, редактируете переменная и до тех пор, пока у вас есть хранимые процедуры для источника данных и правильные имена таблиц, все работает отлично.

То есть ... до тех пор, пока я не достиг 250 таблиц. Когда я запускаю ETL в BIDS, он потребляет ОЗУ как сумасшедший. Когда я развертываю ETL и выполняю его в SQL, это не так. Один запуск ETL на моем ноутбуке, вероятно, будет потреблять от 3 до 4 гигабайт оперативной памяти, поскольку он открывает каждый дочерний пакет из родительского пакета. В моем решении теперь есть 250 пакетов.

Я могу загрузить ОЗУ на своем ноутбуке (в настоящее время сижу в 8 ГБ или ОЗУ), но в моей голове есть определенные предупреждения, которые заставляют меня думать, что, возможно, 250 задач потока данных были бы лучшим выбором.

Понимание изъяна этого шаблона теперь, я полагаю, тогда мои вопросы заключаются в следующий

  1. Был СТАВКИ когда-либо имели в вид, чтобы иметь так много пакетов, выполняющихся в пределах ETL?
  2. Есть ли способ уменьшить потребление ОЗУ при запуске ETL в среде IDE?
  3. Ожидается потребление ОЗУ, и если да, то как разработчики обычно справляются с этим. Я мог бы легко обойти это, никогда не запуская весь ETL в своей среде разработки, но протестируйте его в своих частях, а затем разверните его полностью.
  4. Должен ли я отходить от шаблона проектирования 1 пакета на таблицу и выполнять задачи потока данных в 3 упаковки (1 для загрузки промежуточных столов, 1 для загрузки габаритов и 1 для загрузки моих таблиц фактов)

Спасибо за ваше время, я был бы признателен за вход, который у вас есть.

С уважением,

Джесси

ответ

1

отходя от вопроса RAM на некоторое время, я хотел бы сохранить шаблон проектирования. Это невероятно ценно, когда вы сталкиваетесь с ситуацией, когда вам нужно запустить только однопользовательское ETL после развертывания. С 2012 года он также дает вам гораздо более полезную информацию о регистрации, так как с помощью родительских пакетов все это считается частью одного прогона, что позволяет вам создавать полезный мониторинг/отчетность из данных, хранящихся в SSISDB. Все другие причины, которые вы указали для принятия этого шаблона в первую очередь, также действительны; эта модель способствует повторному использованию стандартизации & и сокращает время разработки. Это также позволяет легкому другому разработчику подобрать решение, найти способ обойти его, поддержать его, внести в него изменения и т. Д.

Возвращение в ОЗУ: 8 концертов действительно не огромная сумма для машины разработки SSIS в среде, где ваше решение ETL настолько велико - если у вас есть возможность обновления, я думаю, что это была бы хорошая идея. Я не сталкивался с проблемой, которую вы описываете, несмотря на работу с некоторыми довольно крупными решениями ETL, но тогда мои предыдущие две машины разработки имели 32 ГБ и 16 ГБ оперативной памяти.SSIS IDE далека от совершенства, и я могу полностью поверить, что вы описываете проблему.

Следует также отметить, что я не часто запускаю полное решение ETL в среде IDE. Я чаще всего запускаю независимые части, когда я работаю над ними, а затем, как только я знаю, что эта часть работает, я развертываю среду разработки (будь то локальная установка или сервер) и выполняю мой полный запуск через агента , Учитывая различия в том, как все работает через агента и внутри среды IDE, я считаю, что это полезно для развертывания на ранней стадии. Я также благодарен за информацию о регистрации, которая работает через агента, дает мне - это может помочь мне отслеживать, влияют ли изменения на производительность. С моделью развертывания 2012+ также не так много времени, чтобы работать таким образом.

В конечном счете, я думаю, что было бы ошибкой отойти от твердого шаблона со многими преимуществами, а не с изменением способа работы, чтобы справиться с несовершенствами IDE. Я думаю, что вы, возможно, в значительной степени ответили на собственный вопрос в пункте 3.

Заключительное примечание. Если на вашем ноутбуке имеется локальная БД разработки (а не только работающая служба SSIS локально и БД, находящаяся на сервере), сделайте убедитесь, что у вас достаточно низкий максимальный размер ОЗУ для локального экземпляра SQL Server. Если вы этого не сделаете, он будет использовать всю вашу RAM для кэширования вещей, а затем SQL Server и SSIS в конечном итоге будут бороться за ОЗУ. Я видел, что причиной ошибок памяти в среде IDS SSIS. Я не думаю, что это то, что вы описываете здесь, но я упоминаю об этом на всякий случай, если это поможет вам или кому-то еще, кто находит это. Q & A.

+0

Спасибо, Джо, я очень ценю ваши отзывы. Я согласен со всем, что вы упомянули. –

Смежные вопросы