|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
Заметил сегодня такую вещь. При выполнении тяжелых запросов, когда SQL нагружается 1С-кой в серьез и надолго - на SQL сервере нагружается строго один процессор. Т.е. прямо в диспетчере задач (или в счетчиках производительности) видно, что загрузка одного проца 100%, остальных практически ноль. И вообще складывается мнение, что при подключении к SQL серверу соединению выделяется конкретный процессор и все запросы идут строго на нем. Т.к. при одновременном запуске отчета в 2х приложениях ситуация бывает 2х видов: нагружены 2 процессора и время формирования каждого отчета почти не меняется или загружен по прежнему только 1 процессор и тогда время формирования каждого сильно возрастает, т.е. или "повезло" сесть на разные процессоры или нет - не знаю как более по научному объяснить. Система: 2003 x86 R2 со всеми обновлениями SQL 2000 SP4, в настройках Affinity mask разрешены все процы, Parallelism: Use all available processors, minimum query plan threshold - 5 (все по умолчанию) Железо: Asus NCCH-DR (чипсет Intel Canterwood-ES E7210), 2 x XEON 3Ghz HT включен Все цепляются по сети. Что это может быть? Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 13:22 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
штатное поведение скивела, ба распаралеливание запросов ОДНОГО соединения штука весьма спорная и в большинстве случаев просто невозможная. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 15:00 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
да пусть не параллелит, но почему строго один процессор грузит? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 15:04 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
и почему все запросы одного соединения выполняются только на одном и том же процессоре? независимо от его загруженности и незагруженности остальных? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 15:09 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
На распареллеливание запроса (одного!) расходуются дополнительные ресурсы SQL сервера. В том числе время. Поэтому SQL сервер использует распараллеливание только в том случае, когда ожидаемое (в соответствии с планом выполнения запроса и накопленными статистиками) время выполнения запроса превысит значение "minimum query plan threshold". По умолчанию это значение установлено в 5 секунд. Для того, чтобы ожидаемое и фактическое время выполнения запроса больше соответствовали друг другу и чтобы план выполнения запроса был наилучшим образом оптимизирован, нужно не только обновить статистики, но и после этого установить флаг принудительной перекомпиляции необходимых хранимых процедур и VIEW (тогда план запроса может быть перестроен на план с распараллеливанием, даже если раньше на меньших объемах план запроса был построен без распараллеливания). Однако, обращаю Ваше внимание на то, что 1С при формировании отчета формирует не один запрос, а множество запросов в цикле. Если каждый из планируемое время каждого запроса меньше 5 секунд, их распараллеливание задействовано не будет. Выполнять же это множество запросов параллельно SQL-сервер также не может, поскольку у него нет информации о том, являются ли они взаимозависимыми и не влияют ли результаты выполнения одних запросов на параметры следующих. Одним словом, управлять распараллеливанием множества запросов должен не SQL сервер, а приложение, отправляющее на сервер эти запросы. На возможность одновременного выполнения запросов в разных сессиях или в одной сессии, но с асинхронным выполнением, оказывают также уровни изоляции транзакций. Пытаться включить принудительное распараллеливание кратковременных запросов установкой параметра minimum query plan threshold, например, в 1 секунду, не рекомендую. В этом случае время фактическое выполнения запросов, скорее всего, увеличится, поскольку дополнительные затраты времени на распараллеливание и синхронизацию данных, формируемых в разных потоках вычислений, превысят выигрыш от более быстрого выполнения каждого из параллельных потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 10:24 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
да, еще... Проверьте в Enterprise Manager в свойствах SQL-сервера, стоят ли галочки на всех процессорах (помечены ли они как доступные SQL-серверу) + переключатель "use all available processors". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 10:37 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
Sk0rpПри выполнении тяжелых запросов Не совсем верно. Скорее тяжелых обработок . Которые порождают лавину мелких запросов к sql в одном подключении. Из-за мелочности запросов - SQL их и не параллелит. Но из-за большого их потока - грузится только один проц. Ну и еще не рекомендовал бы включать HT на серваке с SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 11:48 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
2(Garya) Я возможно не достаточно точно выразился. И не настаиваю на распараллеливании одного запроса. Как правильно уточнил Егоров Александр - это лавина (десятки тысяч) мелких запросов. При этом по счетчикам: средняя загрузка одного ядра 100%, остальных 0%. Если установить сервер на другом компе, то при остальных равных условиях (Винда и SQL с одних и тех же дистрибутивов, настройки SQL теже самые) во время выполнения этого же отчета нагрузка всех ядер примерно равномерная (в сумме теже 100%), что позволяет всем остальным более или менее нормально продолжать работу. - вот этого и хочется добиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 11:57 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
Sk0rp... - вот этого и хочется добиться.А что с галочками? И с переключателем "use all processors"? И еще сообщите какой edition и какая при установке MS SQL указана схема лицензирования - на число юзеров или на число процессоров. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 15:35 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
GaryaSk0rp... - вот этого и хочется добиться.А что с галочками? И с переключателем "use all processors"? И еще сообщите какой edition и какая при установке MS SQL указана схема лицензирования - на число юзеров или на число процессоров. Так я же в шапке написал "Affinity mask разрешены все процы, Parallelism: Use all available processors" Enterprise edition, схема лицензирования "на юзеров" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 16:06 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
Sk0rp, А имя сервера часом не с цифры (1) начинается? Аналогичная ситуевина с 2005-м SQL и тоже на R2... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2008, 14:29 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
Vodkin, нет, имя только из латинских букв. Проблема решилась переустановкой SQL сервера в такой последовательности: убрали HT, снесли SQL, поставили SQL, включили HT - после этого на тех же отчетах загружаться стали все процессоры. Что было - так никто и не понял. Но вот, что еще было замечено: до переустановки в счетчиках производительности SQLServer:SQL Statistics:Batch Requests/sec - был в среднем 3000, пики до 6000; после переустановки при тех же условиях среднее значение стало 300, максимальный пик не превышает 1200. Связано одно с другим или нет - тоже не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2008, 19:29 |
|
1C + MS SQL 2000. При выполнении запросов нагружается только один процессор
|
|||
---|---|---|---|
#18+
Егоров Александр, Где включается НТ на сервере SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2008, 10:56 |
|
|
start [/forum/search_topic.php?author=jsfd&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 713ms |
total: | 843ms |
0 / 0 |