Альтернатива поиску в SSIS - PullRequest
       22

Альтернатива поиску в SSIS

0 голосов
/ 22 октября 2009

Я работаю над решением SSIS для хранилища данных для извлечения суррогатных ключей соответствующих ключей приложения. Я использую задачу поиска SSIS, но проблема этой задачи заключается в том, что она кэширует полную таблицу поиска в своей памяти. И размер моей поисковой таблицы огромен, то есть 20 миллионов записей. Так что, если вы можете предложить некоторые способы или альтернативы для поиска задачи

Ответы [ 4 ]

1 голос
/ 23 октября 2009

Я не считаю таблицу с 20 миллионами записей слишком большой для поиска. Вы можете выполнить некоторую фильтрацию и, выбрав в поиске только необходимые столбцы, вы можете оптимизировать его для использования небольшого объема памяти.

Например, если у вас есть ключевой столбец типа int и столбец varchar размера 10, необходимый для поиска, запись займет 4 + 10 байт, а 20 миллионов перейдет к 20Mx (4 + 10) ~ = 280 МБ, что нельзя считать как слишком высоко.

Тем не менее, если вы хотите сократить использование памяти, вам придется использовать объединения.

0 голосов
/ 13 ноября 2009

Убедитесь, что вы выбираете только те столбцы, которые вам нужны в справочной таблице, не кэшируйте ненужные столбцы. Найдите время, чтобы взглянуть на MS "Project" Real ", который использует SSIS в приложениях с большим объемом данных и обсуждает лучшие практики.

0 голосов
/ 22 октября 2009

Нужно ли сканировать всю таблицу? То есть Вы можете указать свой поиск как представление базы данных на таблице или даже указать его как результаты SQL-запроса (Использовать результаты SQL-запроса)

0 голосов
/ 22 октября 2009

Когда вы вносите данные в пакет служб SSIS, выполните ЛЕВОЕ СОЕДИНЕНИЕ со своими данными Lookup, а затем оцените, что вам нужно.

Если таблица поиска находится в другом источнике, вы можете выполнить LEFT JOIN в SSIS, но это также приведет к кешированию строк. Я думаю, что JOIN может быть немного быстрее, чем Lookup.

...