У меня есть поток данных для переноса строк из базы данных в новую версию базы данных. Одним из изменений, которое мы делаем, является замена строк с именами пользователей целочисленным идентификатором.
Я использую компонент «Уточняющий запрос», чтобы заменить имена менеджера и трейдера их числовым идентификатором, но одно из преобразований выполняется очень медленно по сравнению с другим. На следующем снимке экрана показано, насколько далеко отстает компонент Lookup Trader
от компонента Lookup Manager
.

Как вы можете видеть, примерно 22м строк были переданы компоненту Lookup Manager
, и он "всего лишь" на 100 тыс. Строк позади, но данные, переданные в компонент Lookup Trader
, почти на 8м позади.
Поиск содержит один и тот же запрос для получения имени пользователя и идентификатора для всех трейдеров и менеджеров (они ведутся в одной таблице), и оба они настроены на использование Full Cache
. Они ищут один и тот же тип данных (строку) и оба добавляют новое поле в поток типа INT
.
Я не понимаю, почему один компонент работает намного быстрее, чем другой, когда они практически одинаковы. Значки предупреждения на обоих компонентах отображаются, потому что я установил действие ошибки на Fail Component
во время отладки, даже если подключен выход ошибки. Позже я перенаправлю ошибки в плоский файл.
Мой вопрос в два раза; почему один работает намного медленнее другого и, что более важно, как мне узнать почему ?