У меня есть 2 таблицы (~ 4 миллиона строк), которые я должен выполнять вставке/обновлении при сопоставлении и удалении записей. Я довольно запутался в методе, который я должен использовать для дополнительной загрузки. Должен ли я использовать компонент Lookup или новый SQL-запрос слияния сервера? и будет ли слишком много различий в производительности?Как обрабатывать инкрементную нагрузку с большими наборами данных ssis
ответ
Преждевременная оптимизация - это корень всего зла, я не знаю о ssis, но всегда рано думать об этом.
4 миллиона строк могут быть «большими» или «маленькими», в зависимости от типа данных и используемой конфигурации оборудования.
SSIS Lookup имеет три режима кэширования, которые являются ключевыми для получения наилучшей производительности. Если вы смотрите на большой стол, режим FULL Cache будет потреблять большую часть вашей памяти и может помешать работе. Если ваше место поиска маленькое, сохраните его в памяти. Вы также должны решить, изменяются ли данные, которые вы просматриваете, при обработке данных. Если да, то вы не хотите кэшировать.
Можете ли вы дать нам дополнительную информацию о том, что вы делаете, чтобы я мог сформулировать более точный ответ.
Я столкнулся с этой точной проблемой несколько раз, и мне всегда приходилось прибегать к загрузке полного набора данных в SQL-сервер через ETL, а затем манипулировать хранящимися процессами. Казалось, что это все равно, слишком долго обновляя данные «на лету» в преобразованиях SSIS.
Вы использовали SSIS 2008, и вы пытались использовать MERGE? –
В SSIS 2008 также есть новая функция, которая позволяет кэшировать данные поиска, инкрементно обновлять кеш и затем повторно использовать его в качестве кеша. –