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

Откуда: Владимир
Сообщений: 7
Доброго времени суток, уважаемые коллеги!

Microsoft SQL Server 2008 Standard Edition (64-bit) ver. 10.50.2500.0
Столкнулся со следующей проблемой:
запрос плодится на множество потоков, где-то 100-150. Явных блокировок от него нет, но когда подобных запросов запущено два и более, явно не хватает ресурсов сиквела на обработку других запросов, они делаются но со скрипом.

Есть ли возможность ограничить количество потоков для одной сессии, в настройках сиквела?
Параметр "Максимальное число рабочих потоков" это же общее количество потоков на всем сиквеле, я прав?
3 дек 12, 16:27    [13569651]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37067
kostass
запрос плодится на множество потоков, где-то 100-150
У вас 150 ядер что ли?
3 дек 12, 16:31    [13569692]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
Crimean
Member

Откуда:
Сообщений: 13148
для стандарт версии - только в самом запросе писать option( maxdop N )
для ентерпрайза - уже можно будет городить пулы для говернора
ну или да - зажать число потоков в рамках всего сервера
3 дек 12, 16:33    [13569703]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
kostass
Member

Откуда: Владимир
Сообщений: 7
Гавриленко Сергей Алексеевич
kostass
запрос плодится на множество потоков, где-то 100-150
У вас 150 ядер что ли?

Ядер 16.
3 дек 12, 16:45    [13569804]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37067
kostass
Гавриленко Сергей Алексеевич
пропущено...
У вас 150 ядер что ли?

Ядер 16.
Тогда с чего вы взяли, что ваш запрос параллелится на 100-150 потоков?
3 дек 12, 16:51    [13569879]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
kostass
Member

Откуда: Владимир
Сообщений: 7
Гавриленко Сергей Алексеевич
kostass
пропущено...

Ядер 16.
Тогда с чего вы взяли, что ваш запрос параллелится на 100-150 потоков?

Вижу в мониторе активности.
3 дек 12, 16:58    [13569970]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
Glory
Member

Откуда:
Сообщений: 104760
kostass
Вижу в мониторе активности.

100 коннектов с одинаковым номером ?
3 дек 12, 17:00    [13569987]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
kostass
Member

Откуда: Владимир
Сообщений: 7
Glory
kostass
Вижу в мониторе активности.

100 коннектов с одинаковым номером ?

точно.
3 дек 12, 17:01    [13570000]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
kostass
Member

Откуда: Владимир
Сообщений: 7
Glory,

Запрос по всей таблице складских проводок (32 581 995 записей).
3 дек 12, 17:05    [13570043]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
kostass
Есть ли возможность ограничить количество потоков для одной сессии, в настройках сиквела?

Вам нужна настройка max degree of parallelism.
Правда, всё равно возможен эффект, о котором вы говорите. Например, задаёте значение параллелизма = 4, и видите в мониторе активности 17 записей с одним SPID'ом. Это нормально.
3 дек 12, 17:16    [13570122]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
kostass,

Хммм, у вас версия Standard, для которой максимальный параллелизм = 4. Не пробовали мониторить процессоры при помощи счётчиков Windows — сколько процессоров реально используется при параллельных запросах?
3 дек 12, 17:20    [13570151]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
kostass,

Вообще похоже на затык в дисковой подсистеме. Активность дисков мониторили?
3 дек 12, 17:21    [13570161]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить число потоков для одной пользовательской сессии.  [new]
kostass
Member

Откуда: Владимир
Сообщений: 7
Гость333
kostass
Есть ли возможность ограничить количество потоков для одной сессии, в настройках сиквела?

Вам нужна настройка max degree of parallelism.
Правда, всё равно возможен эффект, о котором вы говорите. Например, задаёте значение параллелизма = 4, и видите в мониторе активности 17 записей с одним SPID'ом. Это нормально.

На данный момент этот параметр стоит = нулю. Сейчас я наблюдаю за процессом обновления статистики по некоторым таблицам, так потоков с одним SPID'ом, иногда, превышает 200. Но это не напрягает пользователей, кратковременные задержки.
А вот тот запрос тяжелый, долгий, да и фиг с ним пусть, делается как делается это отчет, но он отъедает ресурсы у других.
3 дек 12, 17:28    [13570219]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить