Имя: Пароль:
1C
1С v8
Можно ли ограничить SQL по кол-ву используемых процессоров ?
,
0 BigShmax
 
01.08.11
10:59
По памяти  SQL обрезали  чтобы все не жрало а вот по процикам есть такая возможность?  объясняю :   обработка расчета себестоимости занимает 3 - 4 часа  занимает ресурсы SQL сервера на 100%  чтобы не мешать народу работать  подняли SQL на терминале  и пробные  просчеты проводим  там  а финишный  уже в рабочей БД.  вот тока  днем иногда  хочется посчитать  но в момент расчета  сервер занят только этим.  Как  SQL  ограничить чтобы  хоть капельку  оставляло  остальным  в идеале  по ядрам  пусть берет 6 из 8ми и лопатит.
1 ДенисЧ
 
01.08.11
11:00
Свойства сервера - процессоры.
2 Живой Ископаемый
 
01.08.11
11:01
Закиньте его в виртуалку...
3 rs_trade
 
01.08.11
11:03
(0) max degree of parallelism = 1  для начала поставьте
4 BigShmax
 
01.08.11
11:06
(3)  это куда  ?
5 rs_trade
 
01.08.11
11:07
(4) в свойствах сервера, вкладка Advanced
6 IvaneS
 
01.08.11
11:23
(0) В свойствах SQL сервера, вкладка "Memory" и "Processor" рули как хочешь?
7 BigShmax
 
01.08.11
11:33
спасибо буду пробовать
8 rs_trade
 
01.08.11
11:47
(7) сначала именно (3) попробуй. процессоры не трогай.
9 Дикообразко
 
01.08.11
11:47
(3) последствия?
10 rs_trade
 
01.08.11
11:50
(9) самые благоприятные. проблема из сабжа должна исчезнуть.
11 BigShmax
 
01.08.11
13:20
(10)   а подробнее нельзя?   интересна физика.  попробовать смогу тока завтра.  вчерашний расчет обработают.
12 BigShmax
 
01.08.11
13:22
нашел.  у меня SQL 2008  но не думаю  что смысл параметра отличается

Если SQL Server 2005 работает на многопроцессорном компьютере, он определяет оптимальную степень параллелизма, то есть количество процессоров, задействованных для выполнения одной инструкции для каждого из планов параллельного выполнения. Для ограничения количества процессоров в плане параллельного выполнения может быть использован параметр max degree of parallelism. Установленное по умолчанию значение 0 использует все доступные процессоры. Чтобы отключить формирование параллельных планов, присвойте параметру max degree of parallelism значение 1. Значение выше 1 (до 64) позволяет ограничить максимальное количество процессоров, используемых при выполнении одного запроса. Если указано значение, превышающее число доступных процессоров, используется фактическое число доступных процессоров. Если у компьютера только один процессор, то значение параметра max degree of parallelism учитываться не будет.
13 ptiz
 
01.08.11
13:23
(10) Причем тут это? Всё равно будет жрать процессоры.
14 BigShmax
 
01.08.11
13:23
только не понимаю  почему  = 1  а не трем например.  :-)
15 rs_trade
 
01.08.11
13:24
(12) ограничить максимальное количество процессоров, используемых при выполнении ОДНОГО ЗАПРОСА

когда 0, тяжелый запрос раскидывается по всем доступным процам, и все остальные курят и ждут пока он выполнится
16 Господин ПЖ
 
01.08.11
13:25
(11) физика простая - запрещает выполнение запроса параллельно
17 vde69
 
01.08.11
13:28
больше чем уверен, что сабж можно ускорить раз в 10!

обычно основное время занимает запись, если обрабработка долго работает без записи объектов в базу - то на 99% хреновая это обработка (или база слишком нормализована)
18 BigShmax
 
01.08.11
13:28
(16)  вот и вопрос  почему =1  а не например = 3  ядер все равно много  а вот насколько замедлится выполнение  при сокращении с неограниченно (в данном случае 8) до одного.
19 BigShmax
 
01.08.11
13:31
(17)  не думаю  что имеет смысл обсуждать оптимизацию  конкретного расчета  в этой ветке.  да и писал не я  а франчи.  разгребать и оптимизировать  если надо у меня сейчас нет ни знаний ни времени.  там  очень развернутый просчет.  в не сезон считает работы компании расчет занимает 30-40 минут.  сейчас  растут объемы производства.
20 vde69
 
01.08.11
13:31
(18) во многих случаях параллелизм становится причиной медленой работы (возникают ожидания потоков)
21 rs_trade
 
01.08.11
13:35
(13) будет. но не все и сразу.
22 BigShmax
 
01.08.11
18:12
блин  много поначитался про этот max degree of parallelism

такое  впечатление  что лагерь разбит на две части  в какое значение его взводить.  
1.  в какой момент изменения вступят в силу , в момент сохранения параметра или нужно пере запускать сервис?
2.  все таки  при работе  7-8 десятков  пользователей в УПП  какое значение  выгоднее?  (причем на SQL  еще живет бухия  с 15 пользователями и архивная 8.1 УПП)
23 vde69
 
01.08.11
18:59
почитай http://msdn.microsoft.com/ru-ru/library/ms179984.aspx

ищи у себя статистику по этим видам блокировок...

а вообще если регулярно не делать обновление статистики - то лучше ставить параллелизм = 1, ведь именно на основании статистики он и строит планы запроса, и если статистика старая он строится далеко не оптимально, тогда и возникают блокировки
24 vde69
 
01.08.11
19:01
(23) ну и до кучи http://infostart.ru/public/16681/
25 fisher
 
01.08.11
19:11
Для 1С вроде однозначно сошлись на том, что выгоднее параллелизм отключать.
26 Fragster
 
гуру
01.08.11
19:20
(3)Это не всегда хорошо для производительности, да он и сам больше выделенных процессоров не должен параллелить
27 Fragster
 
гуру
01.08.11
19:20
(25) виртуальные таблицы при параллельности часто быстрее работают
28 Fragster
 
гуру
01.08.11
19:20
да и вообще запросы из слабо связанных кусков - типа объекдинений
29 Fragster
 
гуру
01.08.11
19:22
иногда просто лучше трешхолд поднять немного
30 Fragster
 
гуру
01.08.11
19:23
(23) в свойствах базы можно поставить автоактуализацию статистики же
31 vde69
 
01.08.11
19:26
(25) для 77 однозначно отключать, для 8.х включать, но с обновлением статистики и прочим "приглядом"

для 77 там отключать его надо из-за блокировок а не из-за производительности
32 vde69
 
01.08.11
19:27
(30) хммм не знал, а где там?
33 Rebelx
 
01.08.11
19:46
надо ставить 1 - скорость работы тяжелых процессов меньше, зато остальные могут работать.
т.е.
производительность -
параллельность +