быстрая загрузка таблицы сервера SQL - PullRequest
1 голос
/ 14 мая 2009

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

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

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

Есть предложения?

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

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

FastLoadOptions - TABLOCK, CHECK_CONSTRAINTS

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

Ответы [ 4 ]

6 голосов
/ 14 мая 2009

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

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

2 голосов
/ 14 мая 2009

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

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

0 голосов
/ 14 мая 2009

Сложно сказать.

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

Но, похоже, это простая передача.

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

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

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

0 голосов
/ 14 мая 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...