Настройка сервера независимо от приложений

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

Расширение оперативной памяти
Большинство методов настройки сервера направлено на сокращение объемов физического ввода-вывода, необходимого для обработки запросов. Чем больше страниц базы данных удастся поместить в кэш-буфер сервера, тем выше оказывается быстродействие этой базы данных, поскольку обработка этих страниц не потребует обращений к дискам.

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

При распределении имеющейся оперативной памяти определите соотношение размеров кэш-буферов данных и процедур. Первый из них используется для хранения страниц данных при их чтении и модификации, а второй — содержит хранимые процедуры. Расширение каждого из них повысит быстродействие сервера за счет увеличения процента попаданий, т.е. обращений сервера к страницам диска, которые удается выполнить с помощью страниц, уже находящихся в оперативной
памяти сервера. Найти оптимальный баланс между размерами кэш-буфера данных и кэш-буфера процедур можно, наблюдая с помощью программы SQL Monitor за процентом успешных поисков в каждом буфере. Одновременно следует изменять соотношение, варьируя значение параметра конфигурации “procedure cache percent” процедурой sp_configure.

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

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

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

Твердотельное запоминающее устройство
Использование твердотельного запоминающего устройства (Solid State Device, SSD) является логическим продолжением нашей предыдущей рекомендации расширить оперативную память серверной машины.

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

При помощи SQL Monitor нетрудно найти наиболее часто используемые серверные устройства и перенести их объекты на твердотельное устройство.

Одним из самых активных объектов сервера является временная база данных tempdb, а также журналы транзакций тех баз данных сервера, к которым больше всего обращаются пользователи. Естественно, перемещение наиболее востребованных сегментов баз данных на твердотельное устройство позволит заметно повысить быстродействие всего сервера.

Серверные устройства, поддерживаемый файлами операционной системы
Серверным устройствам не следует назначать файлы операционной системы, поскольку ввод-вывод в такие файлы является буферизованным. Это может исключить восстановление баз данных устройства.

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

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

Зеркальное отображение
Зеркальное резервирование серверных устройств и расположенных на них баз данных — это один из наиболее эффективных способов обеспечения целостности данных и ускорения восстановления сервера после сбоев. Говоря о повышении производительности сервера, отметим, что при считывании с диска значительных объемов данных следует использовать возможность одновременного чтения с главного и вторичного устройств зеркальной пары.

В некоторых случаях это может ускорить выполнение подобных операций.

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

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

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

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

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100