Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекцій розробка.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
24 Мб
Скачать
☆

7.8. Налаштування використання процесорів і паралельної обробки. Оптимізація використання процесорів.

В многопроцессорных системах могут использоваться специальные средства, предоставляемые SQL Server для параллельной и симметричной обработки данных. Можно контролировать, каким образом и когда SQL Server использует процессоры, а также указать, в каких случаях запросы обрабатываются параллельно.

Оптимизация использования процессоров

Обеспечение многозадачности является одной из важнейших функций операционной системы. Довольно часто операционная система принимает решение о перемещении потоков выполнения между разными процессорами. В системе, где загруженность невелика, это позволяет повысить производительность сервера посредством уравновешивания общей нагрузки. Однако в системе с большой нагрузкой переключение потоков может понизить общую производительность из-за необходимости частой перезагрузки кэша процессора.

Для оптимизации использования процессоров SQL Server 2005 поддерживает такие функциональные возможности, как привязка к процессору (processor affinity) и привязка к вводу-выводу (I/O affinity). Первая позволяет назначить процессор для обработки определенных потоков выполнения (то есть привязать потоки к процессору) с целью устранения перезагрузки процессоров и уменьшения частоты переключения потоков между ними. Привязка к вводу-выводу устанавливает, какие процессоры могут обрабатывать операции дискового ввода-вывода, относящиеся к SQL Server.

Если принимается решение управлять привязкой вручную, желательно, чтобы одни процессоры были настроены для приоритетной обработки потоков, а другие — для операций дискового ввода-вывода, без совмещения этих двух задач. Например, для 32-процессорной системы, на которой запущен SQL Server 2005 Enterprise Edition, возможен такой вариант настройки: для процессоров от 0 до 15 устанавливается привязка к процессору (это значит, что они будут управлять потоками выполнения), а для процессоров от 16 до 31 — привязка к вводу-выводу (то есть они будут управлять операциями дискового ввода-вывода).

Примечание Не существует определенной формулы для распределения процессоров между этими операциями, то есть совсем не обязательно назначать выполнение задач между равным числом процессоров. Действительная конфигурация должна зависеть от назначения и загруженности сервера.

Параметры привязки настраиваются автоматически и оптимизируются при установке SQL Server. Если возникает необходимость оптимизировать производительность сервера, нагрузка на который возросла, можно попробовать оптимизировать параметры привязки. Однако прежде изучите следующие предостережения.

_ Не изменяйте эти параметры, не просчитав возможные последствия. Неправильное управление параметрами привязки может привести к снижению производительности.

_ Не настраивайте привязку к процессору и в операционной системе, и в SQL Server.

Поскольку оба способа равнозначны, используйте либо один, либо другой.

_ Не включайте для одного и того же процессора одновременно параметры привязки к процессору и к вводу-выводу. Каждый процессор может иметь только один тип привязки из трех возможных: либо включена привязка к процессору, либо — к вводу–выводу, либо обе отключены.

Чтобы вручную настроить режим использования процессора, выполните перечисленные ниже действия.

1. Запустите SQL Server Management Studio и подключитесь к серверу, предназначенному для настройки.

2. В панели Object Explorer (Обозреватель объектов) щелкните правой кнопкой сервер и из его контекстного меню выберите команду Properties (Свойства).

3. В диалоговом окне Server Properties (Свойства сервера) перейдите на страницу Processors (Процессоры), как показано на рис. 6-4.

4. В списке, где перечислены установленные процессоры, определите, какие из них использует SQL Server. Для этих процессоров установите флажки, а возле остальных снимите. Первый процессор системы указан как CPU0, второй как CPU1 и т. д.

Примечание Система может иметь больше процессоров, чем поддерживает SQL Server.

Например, на симметричной многопроцессорной системе с восемью процессорами, редакция SQL Server Standard способна использовать только четыре. Остальные применяются для других приложений и системных задач.

Совет Для выполнения задач SQL Server назначение процессоров с высокими номерами (например, 4, 5, 6 и 7) не всегда является оптимальным решением. Windows назначает выполнение отложенных вызовов процессов, связанных с сетевыми интерфейсными платами, процессорам с высоким номером. Поэтому, например, если бы система, описанная выше, имела две сетевые интерфейсные платы, эти вызовы направлялись бы на CPU7 и CPU6.

Прежде чем менять эти значения, обратитесь к документации на оборудование.

5 . Щелкните кнопку OK. Новые параметры будут применены после остановки и перезапуска сервера.

Для установки маски привязки (affinity mask) можно также использовать хранимую процедуру sp_configure, выполнив такие инструкции:

EXEC sp_configure 'affinity mask', integer_value

EXEC sp_configure 'affinity i/o mask', integer_value

Рис. 6-4. Страница Processors диалогового окна Server Properties

SQL Server рассматривает целое значение как битовую маску, представляющую процессоры, которые следует использовать. В этой битовой маске процессор CPU0 представлен битом 0, CPU1 — битом 1, и т. д. Каждый бит со значением 1 означает использование SQL Server соответствующего процессора. Бит, установленный в 0, указывает SQL Server не использовать соответствующий процессор. Например, если требуется включить поддержку для второго (CPU1), третьего (CPU2) и шестого (CPU5) процессоров, получаем такое бинарное значение (биты отсчитываются справа):

000100110. Соответствующим целым значением является 38 (21 + 22 + 25 = 2 + 4 + 32).

Установка параметров параллельной обработки

Чтобы определить, следует ли использовать параллельную обработку или нет, SQL Server должен провести множество вычислений. Как правило, он принимает решение о параллельной обработке запросов в следующих случаях:

_ когда количество процессоров превышает количество активных соединений;

_ когда расчетная стоимость последовательного выполнения запроса выше, чем установленный порог стоимости для принятия решения о параллельном выполнении (расчетной стоимостью называется время в секундах, необходимое для последовательного выполнения запроса).

Некоторые типы инструкций не могут быть обработаны параллельно; правда, только если они не содержат дополнительных предложений. Например, инструкции UPDATE, INSERT и DELETE не обрабатываются параллельно, даже если соответствующий запрос отвечает необходимым критериям. Но если инструкции UPDATE или DELETE содержат предложение WHERE, или инструкция INSERT содержит предложение SELECT, то эти предложения могут быть обработаны параллельно.

В таких случаях изменения применяются к базе данных последовательно.

Для дополнительной настройки параллельной обработки выполните указанные ниже действия.

1. В диалоговом окне Server Properties (Свойства сервера) перейдите на страницу Advanced (Дополнительные).

2. По умолчанию параметр Max Degree Of Parallelism (Максимальная степень параллелизма) имеет значение 0; это означает, что максимальное количество процессоров, используемых для параллельной обработки запроса, определяется автомати чески (при построении его плана). Обычно SQL Server стремится использовать все доступные процессоры, в зависимости от рабочей нагрузки. Чтобы ограничить число процессоров для параллельного выполнения запроса определенным заданным количеством (вплоть до максимума, поддерживаемого SQL Server), укажите значение параметра Max Degree Of Parallelism (Максимальная степень параллелизма) большее, чем 1. Значение 1 не разрешает SQL Server использовать параллельную обработку.

3. Обширные, сложные запросы при параллельной обработке обычно выполняются быстрее. Однако SQL Server производит параллельную обработку только в том случае, если для одного и того же запроса расчетное количество секунд, требуемое для его последовательного выполнения, выше, чем значение, установленное для порога стоимости необходимых для распараллеливания запросов. На странице Advanced (Дополнительные) диалогового окна Server Properties (Свойства сервера) установите порог расчетной стоимости в поле Cost Threshold For Parallelism (Порог стоимости для параллелизма). Допустимо любое значение от 0 до 32 767.

В случае одиночного процессора порог стоимости игнорируется.

4. Щелкните кнопку OK. Изменения будут применены немедленно. Перезапуск сервера не требуется.

Настроить параллельную обработку запросов можно также с помощью хранимой процедуры sp_configure, используя соответствующие инструкции Transact-SQL:

EXEC sp_configure 'max degree of parallelism', integer_value

EXEC sp_configure 'cost threshold for parallelism', integer_value

Література

  1. Бурков А.В. Проектирование информационных систем по технологии клиент – сервер в «Microsoft SQL Server 2008» и «Microsoft Visual Studio 2008» 194с.

  2. Бучек Г.ASP .NET. Учебный курс — СПб.: Питер, 2002. — 512 с.: ил.

  3. Вийера Р. Програмирование баз данных Microsoft SQL Server 2005 для профессионалов / Р. Вийера // 2008. 256с.

  4. Волоха А. В. Microsoft SQL Server 2005. Новые возможности. — СПб.: Питер, 2006. — 304 с.: ил.

  5. Дж.Боуман, С.Эмерсон, М.Дарновски - Практическое руководство по SQL

  6. Станек Уильям Р. Microsoft SQL Server 2005. Справочник администратора / Пер. с англ. — М.: Издатель ство «Рус ская Ре дак ция», 2008. — 544 с.: ил.