Быстрая загрузка таблицы сервера sql не

Я унаследовал пакет SSIS, который загружает 500 тыс. строк (около 30 столбцов) в промежуточную таблицу.

Он готовится уже около 120 минут и не готов --- это говорит о том, что он работает со скоростью менее 70 рядов в секунду. Я знаю, что среда у всех разная, но я думаю, что она на пару порядков отличается от «типичной».

Как ни странно, промежуточная таблица имеет ограничение PK для столбца INT (идентификация), и теперь я думаю, что это может снижать производительность нагрузки. В промежуточной таблице нет других ограничений, индексов или триггеров.

Какие-либо предложения?

---- Дополнительная информация ------
Источник представляет собой файл с разделителями табуляцией, который подключается к двум отдельным компонентам потока данных, которые добавляют некоторые статические данные (дату выполнения и идентификатор пакета) в поток, который затем подключается к целевому адаптеру OLE DB

Режим доступа — OpenRowset с использованием FastLoad.

FastLoadOptions: TABLOCK,CHECK_CONSTRAINTS

Максимальный размер фиксации вставки: 0


person Ralph Shillington    schedule 13.05.2009    source источник
comment
Можете ли вы привести пример того, как выглядят данные и структура таблицы?   -  person DForck42    schedule 14.05.2009
comment
Даже с ограничением PK он должен работать намного лучше. Видите ли вы какие-либо блокировки в SSMS? Вы пытались запросить промежуточную таблицу с незафиксированным nolock/read, чтобы увидеть, добавлено ли что-нибудь вообще?   -  person Tomalak    schedule 14.05.2009


Ответы (4)


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

Проблема заключалась в типе данных входных столбцов из текстового файла: все они были объявлены как «текстовый поток [DT_TEXT]», и когда я изменил его на «String [DT_STR]», за 58 секунд было загружено 2 миллиона строк, что сейчас находится в Область «типичного» — я не уверен, что делает источник текстового файла, когда столбцы объявляются таким образом, но теперь это позади!

person Ralph Shillington    schedule 14.05.2009
comment
Если вы считаете, что ваш собственный ответ лучше описывает решение, тогда ответ на ваш собственный вопрос в порядке. Также отметьте это как принятый ответ, чтобы люди знали, что он решен. - person Coops; 14.01.2013

Я бы сказал, что есть какая-то проблема, я массово вставляю промежуточную таблицу из файла с 20 миллионами записей и большим количеством столбцов и полем идентификации за гораздо меньшее время, чем это, и SSIS должен быть быстрее, чем пакет SQL Server 2000. вставлять.

Вы проверили наличие проблем с блокировкой?

person HLGEM    schedule 13.05.2009

Если он работает в одной большой транзакции, это может многое объяснить. Убедитесь, что фиксация выполняется время от времени.

Вы также можете проверить загрузку процессора, памяти и ввода-вывода, чтобы исключить проблемы с ресурсами.

person stili    schedule 13.05.2009

Это трудно сказать.

Если бы был сложный ETL, я бы проверил максимальное количество потоков, разрешенных в потоках данных, чтобы посмотреть, могут ли некоторые вещи работать параллельно.

Но похоже, что это простой перевод.

При 500 000 строк пакетная обработка возможна, но я не думаю, что это необходимо для этих нескольких строк.

Идентификация ПК не должна быть проблемой. Есть ли у вас какие-либо сложные ограничения или постоянные вычисляемые столбцы в месте назначения?

Это тянет или толкает по медленному сетевому каналу? Это вытягивание или выталкивание из сложной SP или представления? Что является источником данных?

person Cade Roux    schedule 13.05.2009