MSSQL: bulk insert и merge
От: Андрей Россия  
Дата: 24.04.14 11:29
Оценка:
Всем доброго времени суток.

Есть проблема с производительностью сабжа.

Делаю bulk insert (примерно 3,5 млн строк) во временную таблицу.
Потом мержу ее с основной таблицей (тоже примерно 3,5 млн строк).
insert выполняется быстро, а вот merge — тормозит.
Причем бОльшую часть времени он находится в состоянии SUSPENDED c типом ожидания PAGEIOLATCH_EX.

Что мне непонятно: если я все то же самое проделываю через SSMS — все работает быстро. merge не висит в ожидании.
Разница только в том, что временную таблицу я просто заполняю из другой (без использования bulk insert).

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

Куда копать? В чем может быть причина тормозов?
Планы запросов практически одинаковые в обоих случаях.
Re: MSSQL: bulk insert и merge
От: Olaf Россия  
Дата: 25.04.14 07:53
Оценка:
Здравствуйте, Андрей, Вы писали:

А>Куда копать? В чем может быть причина тормозов?

А>Планы запросов практически одинаковые в обоих случаях.

Т.е. все-таки отличие есть. А в чем оно заключается? По идее они должны полностью совпадать, за исключением числовых показателей, которые могут отличаться из-за различия обрабатываемых данных.
Re[2]: MSSQL: bulk insert и merge
От: Андрей Россия  
Дата: 25.04.14 10:04
Оценка:
Здравствуйте, Olaf, Вы писали:

O>Здравствуйте, Андрей, Вы писали:


А>>Куда копать? В чем может быть причина тормозов?

А>>Планы запросов практически одинаковые в обоих случаях.

O>Т.е. все-таки отличие есть. А в чем оно заключается? По идее они должны полностью совпадать, за исключением числовых показателей, которые могут отличаться из-за различия обрабатываемых данных.


Ну вот это я и имел ввиду — различия только в числах. И то небольшие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.