Мы вставляем / удаляем около 1 миллиона строк в таблицу с двумя миллионами строк с помощью SSIS.
У нас есть 20 индексов в этой таблице.
Сразу после завершения SSIS мы наблюдаем тайм-ауты во внешнем интерфейсе. Таймауты со временем исчезнут.
Я подозреваю, что это происходит из-за индексов во время их реорганизации.
Что мы можем сделать?
Индексы обновляются по мере обновления данных, обновления индексов синхронны.
Теперь обновление статистики - это асинхронная операция. После того, как обновление данных будет выполнено вручную, обновите статистику по рассматриваемым таблицам.
Обновляя более 20% строк в таблице, вы запускаете статистика Обновить.
По умолчанию sql server выполняет это синхронно. Это означает, что если затронутый индекс используется в плане выполнения, оптимизатор замечает, что статистика устарела, немедленно выполняет обновление и повторно компилирует план выполнения.
В SQL Server 2005 появилась новая функция, которая сделает обновление статистики для базы данных асинхронным, т. Е. Оптимизатор будет использовать устаревшую статистику, но запускать обновление статистики в фоновом режиме, чтобы следующий запрос использовал преимущества новой статистики. . Команда AUTO_UPDATE_STATISTICS_ASYNC ON
видеть BOL Чтобы получить больше информации.
Альтернатива, как уже было предложено, - это принудительное обновление таблицы вручную после загрузки. Вы можете сделать это с помощью UPDATE STATISTICS
команда. Здесь BOL ссылка.
Если вы используете задачу массовой вставки в SSIS, вы можете попробовать установить размер пакета, это разбивает его на более мелкие фрагменты с коммитами между ними.