Многопроцессорное использование в SQL Server - PullRequest
0 голосов
/ 28 июня 2011

Я сейчас готовлю процедуру экспорта из SQL Server в стороннюю ERP-систему.Он сканирует почти все таблицы из схемы базы данных и создает XML для каждого продукта.Экспорт достаточно длинный, клиент желает сделать это быстрее.Я понял, что в процедуре экспорта используется только 1 процессор.

Так что я думаю, что если я выполню одну и ту же процедуру несколько раз с разными параметрами (разным ассортиментом продуктов), я смогу использовать все процессоры, и это может быть быстрее.

Вопросы

  1. Как я могу это сделать, используя только инструменты SQL Server.Одним из возможных решений является использование SSIS.Любой другой?

  2. Количество процессоров может быть разным.Я могу получить количество процессоров, используя sys.dm_os_sys_info.Насколько динамически запускать процедуру в несколько раз зависит от количества процессоров?

1 Ответ

0 голосов
/ 28 июня 2011

Несколько вещей, которые нужно иметь в виду:

1 - Вы УВЕРЕНЫ, что вы связаны с процессором, а не с IO? По моему опыту, очень редко, когда процессор является узким местом в процессе, и гораздо более вероятно ограничение скорости доступа к диску. Вам следует провести дополнительное тестирование, чтобы избежать реструктуризации всего процесса, только чтобы получить увеличение скорости на 2%, поскольку ваши жесткие диски не справляются.

2 - Это может быть так же просто, как проверить настройки параллелизма на стороне сервера. Иногда администраторы устанавливают это значение равным 1, потому что это может уменьшить проблемы с плохими планами запросов, но обычно это дает ограниченные преимущества.

3 - Вы можете установить максимальную степень параллелизма для запроса, используя OPTION (MAXDOP #), где # - количество параллельных процессов, которые вы хотите разрешить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...