Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хранимая процедура на C# не использует все процессоры сервера  [new]
Konstantin_KK
Member

Откуда:
Сообщений: 14
Помогите решить следующую проблему

Есть некая база, в ней таблица на несколько млн. записей
Запускаю такой скрипт на исполнение

UPDATE [test] SET [Column1] = ltrim(rtrim([Column1]))


После чего иду в "Диспетчер задач" и вижу что используются все 4 процессора

Создаю на C# хранимку следующего вида

[SqlFunction]
public static SqlString upstring(string value)
{
  return String.IsNullOrEmpty(value) ? "" : new SqlString(Strings.StrConv(value, VbStrConv.ProperCase));
}


Запускаю такой скрипт на исполнение

UPDATE [test] SET [Column1] = [upstring]([Column1])


После чего иду в "Диспетчер задач" и вижу что используются только 1 процессор, а не все 4

Почему так происходит и как мне нужно сделать, чтоб использовать все доступные процессоры
22 окт 12, 19:43    [13358637]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура на C# не использует все процессоры сервера  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
Распилить данные на 4 части и запустить в четырех коннектах UPDATE [test] SET [Column1] = [upstring]([Column1]).
22 окт 12, 19:51    [13358672]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура на C# не использует все процессоры сервера  [new]
FantomGood
Member

Откуда: Херсон
Сообщений: 335
Примечание
Выполнение объекта CLR (определяемой пользователем функции, определяемого пользователем типа или триггера) в среде CLR может производиться в нескольких потоках (параллельный план), если оптимизатор запросов посчитает это более выгодным. Однако, если доступ к данным выполняет определяемая пользователем функция, выполнение будет осуществляться согласно последовательному плану. При выполнении на сервере, имеющем версию, предшествующую SQL Server 2008, в случае, если определяемая пользователем функция содержит параметры или возвращает значения больших объектов (LOB), выполнение также должно производиться согласно последовательному плану.
23 окт 12, 12:18    [13361459]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить