Большая вставка / обновление в таблице приводит к превышению времени ожидания, пока SQL Server переупорядочивает индексы

Мы вставляем / удаляем около 1 миллиона строк таблицы из двух миллионов строк с помощью служб SSIS.

У нас есть 20 индексов на эту таблицу.

Сразу после окончания службы SSIS у нас возникают тайм-ауты во внешнем интерфейсе. Тайм-ауты в конце концов уходят.

Я подозреваю, что индексы вызывают это во время их реорганизации.

Что мы можем сделать?

3 ответа

Индексы обновляются по мере обновления данных, обновления индексов являются синхронными.

Теперь обновление статистики - это асинхронная операция. После того, как обновление данных выполнено вручную, выполните обновление статистики по рассматриваемым таблицам.

Обновляя более 20% строк в таблице, вы запускаете обновление статистики.

Поведение сервера SQL по умолчанию - делать это синхронно. Это означает, что если затронутый индекс используется в плане выполнения, оптимизатор замечает, что статистика устарела, немедленно инициирует обновление и перекомпилирует план выполнения.

В SQL Server 2005 появилась новая функция, которая делает обновление статистики асинхронным для базы данных, т.е. оптимизатор будет использовать устаревшую статистику, но запускать обновление статистики в фоновом режиме, чтобы следующий запрос использовал преимущества новой статистики., Команда AUTO_UPDATE_STATISTICS_ASYNC ON см. BOL для получения дополнительной информации.

Альтернатива, как уже предлагалось, заключается в принудительном обновлении таблицы вручную после загрузки. Вы можете сделать это с UPDATE STATISTICS команда. Вот ссылка на BOL.

Если вы используете задачу "Массовая вставка" в службах SSIS, вы можете попытаться установить размер пакета, это разделит его на более мелкие куски с коммитами между ними.

Другие вопросы по тегам