Загрузка файла SSIS СЛИШКОМ МЕДЛЕННО в большой таблице назначения - PullRequest
0 голосов
/ 22 февраля 2012

это мой первый вопрос, я искал много информации с разных сайтов, но ни одна из них не была убедительной.

Проблема: Ежедневно я загружаю плоский файл с пакетом служб SSIS, выполненным взапланированное задание в SQL Server 2005, но оно занимает СЛИШКОМ МНОГО ВРЕМЕНИ (например, 2,5 часа), и файл имеет всего 300 строк и приблизительно 50 МБ файла.Это сводит меня с ума, потому что влияет на производительность моего сервера.

Это сценарий: -Мой пакет - это просто задача потока данных, которая имеет источник плоских файлов и назначение OLE DB, вот и все!!!- Режим доступа к данным установлен на FAST LOAD.-Просто иметь 3 индекса в таблице и не являются кластеризованными.-Мою таблица назначения имеет 366 964 096 записей и 32 столбца. -Я еще не установил FastParse ни в одном из столбцов вывода. (Сначала хочу попробовать что-то другое)

Так что я только начал делать некоторыетесты:

-перестроить / реорганизовать индексы в целевой таблице (они были слишком фрагментированы), но это мне не сильно помогло -создал другую таблицу с такой же структурой, но без всех индексов и выполнилРаботайте с загрузкой пакета служб SSIS в эту новую таблицу, и ЭТО ПРОСТО УСТАЛО, КАК 1 МИНУТА !!!

Так что я в замешательстве, я что-то упускаю?- Пакет служб SSIS записывает всю большую таблицу в буфер и записывает ее на диск?Или почему большая разница во времени?

- Индекс влияет на время вставки?

- Нужно ли загрузить файл в эту новую таблицу как временную таблицу, а затем выполнить BULK INSERT, чтобытаблица назначения с заказанными записями?Потому что я думал, что Задача Data FLow была намного быстрее, чем BULK INSERT, но сейчас я не знаю.

Привет заранее.

Ответы [ 3 ]

1 голос
/ 22 февраля 2012

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

В пакетах служб SSIS использование объединения слиянием (которое требует сортировки) может вызвать замедление, но из вашего описания не видно, что вы это сделали.Я упоминаю об этом только в том случае, если вы делали это и не упоминали об этом.

0 голосов
/ 24 февраля 2012

Что ж, я перестроил индексы с другим коэффициентом заполнения (80%), как сказал мне Сэм, и время значительно сократилось. Это заняло 30 минут вместо почти 3 часов !!! Я буду продолжать с тестами для тонкой настройки БД. Кроме того, мне не нужно было создавать кластеризованный индекс, я думаю, что с кластеризованным время будет падать намного больше.

Спасибо всем, желаю, чтобы это помогло кому-то в такой же ситуации.

0 голосов
/ 23 февраля 2012

Если все работает нормально без индексов, возможно, вам стоит взглянуть на них.Какие типы данных?Сколько их там?Может быть, вы могли бы опубликовать их определения?

Вы также можете взглянуть на коэффициент заполнения ваших индексов - особенно кластерный индекс.Высокий коэффициент заполнения может привести к чрезмерному IO на ваших вставках.

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