У нас есть SQL Server 2008 R2 (10.5) на выделенном компьютере с одним процессором 2,4 ГГц, который регулярно работает на 70-80% ЦП. Мы собираемся добавить в приложение значительное количество пользователей и, следовательно, хотим добавить второй процессор в коробку (масштабирование).
Будет ли SQL Server автоматически использовать второй процессор для балансировки потоков, или потребуется дополнительная настройка? Другими словами, снизит ли использование второго процессора мою загрузку до 35-40% на процессор, автоматически балансируя нагрузку?
Судя по тому, что я здесь читал, похоже, что это будет: http://msdn.microsoft.com/en-us/library/ms181007.aspx
Тем не менее, я где-то читал, что прирост производительности ЦП можно получить, назначив таблицы базы данных разным файловым группам, но я не уверен, что мы хотим усложнять ситуацию на данном этапе.
Ссылка, которую вы предоставили, предназначена для максимальной степени параллелизма. Эта функция полностью отличается от того, о чем вы спрашиваете.
SQL Server будет использовать новый ЦП, добавленный к вашему серверу, до тех пор, пока операционная система может его видеть, и пока для параметра «Маска сродства» в SQL Server установлено значение 0. Вам нужно бежать EXEC master.dbo.sp_configure 'affinity mask'
из окна запроса и посмотрите на результаты config_value. Пока он равен 0, SQL автоматически использует новый ЦП. Однако, прежде чем добавлять этот новый процессор, вам сначала нужно посмотреть на версию SQL, которую вы используете. Максимальное количество поддерживаемых процессоров зависит от выпуска.
По ссылке ниже указаны пределы каждого из них. Если вы не знаете, какая у вас версия, вы можете запустить SELECT SERVERPROPERTY('Edition')
из того же запроса, чтобы узнать.
Максимальное количество процессоров, поддерживаемых выпусками SQL Server 2008 R2
Прирост производительности ЦП может быть достигнут путем распределения таблиц по группам файлов, но это своего рода косвенный эффект.
Когда SQL Server хочет прочитать данные, он выдает запрос и откладывает поток, выполняющий запрос, до тех пор, пока оборудование ввода-вывода не удовлетворит запрос. Если ваш запрос относится к таблицам, которые находятся в отдельном физическом хранилище, или хранятся в таблицах, охватывающих несколько физических дисков в одной файловой системе, SQL Server может выдавать несколько запросов ввода-вывода. Это ускоряет ввод-вывод, а значит, ЦП будет тратить меньше времени на спящий режим.