При выполнении задания на SQL Server 2008 я заметил, что 2 процессора работают на 100%, а 2 - только около 30%.
Как распределить нагрузку и сократит ли это продолжительность работы, которая в настоящее время занимает более 1 часа?
Он работает на Windows Server 2008 -VmWare с SAN. 32 бит. ~ 3,5 ГБ памяти.
Если вам нужна дополнительная информация, спрашивайте.
Не изменяя свою работу так, чтобы можно было выполнять больше работы параллельно, вы, вероятно, увидите худшую производительность, если вам удастся выровнять нагрузку. Два процессора со 100% -ной загрузкой, вероятно, выделены для двух параллельных потоков, и их перемещение вызовет дополнительные накладные расходы на переключение контекста и загрузку кешей памяти ЦП. Два других могут разделять дополнительную нагрузку, которая может быть ограничена первыми двумя процессами.
Если вы можете увеличить степень, в которой задание может выполняться параллельно, вы сможете сэкономить время, но это все равно должно занять более получаса. (Текущая среда выполнения * 260/400 должна быть вашим лучшим улучшением.)
В подобных случаях часто встречаются узкие места. Если вы решите одну проблему, вы, скорее всего, обнаружите другую.
Некоторые проблемы с базой данных можно решить, изменив задействованные запросы. Учитывая, что ЦП является узким местом, возможно, удастся улучшить код базы данных. Это потребует настройки запроса с использованием максимальной загрузки ЦП. Профилирование приложения может дать информацию, которая поможет в его оптимизации.