SQL-server 2008 и многопоточность.
От: blonduser  
Дата: 28.11.14 07:31
Оценка:
Всем доброго времени суток.

В базе на 2008 SQL-server-е имеется таблица с данными.
Нужно обработать данные: считываем из одной колонки, "магическим" образом обрабатываем и сохраняем в другую колонку той же самой записи.
Обработка запускается из пакетного файла с помощью sqlcmd.

Время обработки заняло где-то 250 секунд.
Решили его улучшить и запустить обработку в 5 потоков, выделив каждому свой диапазон записей.
И о чудо... первые два потока завершили свою работу приблизительно за 100 секунд, второй за 300 секунд, а оставшиеся за 400 секунд.
(время округлено для примера, но диапазон такой).

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

Кто прав?
Если я не прав, то какие есть способы оптимизации?

И еще вопрос. Возможно ли из сторед-процедуры запустить в отдельных потоках на выполнение другие сторед-процедуры?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.