Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00

Лекция 5: Конфигурирование и планирование подсистемы ввода-вывода

Планирование размещения дисков

При планировании размещения дисков принимаются решения о том, как данные должны быть размещены на дисках, а затем пишутся сценарии SQL, которые создадут базу данных. Достоинством создания базы данных при помощи сценариев SQL, а не при помощи SQL Server Enterprise Manager является то, что вы можете пользоваться ими многократно и вносить в них изменения.

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

Планирование размещения журнала транзакций

Планирование размещения журнала транзакций очень простое. Часто наилучшим решением является использование для журнала транзакций только одного файла данных. Если вам придется добавлять к своей базе данных дополнительные файлы журналов транзакций, не забудьте, что их следует размещать на томах RAID 1 или RAID 10. Также не забудьте, что файлы журналов транзакций должны храниться отдельно от данных и от других журналов транзакций.

Планирование размещения файлов данных

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

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

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

Например, если у вас имеется два тома, один – из 20 дисковых накопителей, а другой – из 10 накопителей, то нужно создать группу файлов из двух файлов данных. (О применении файлов и групп файлов см. "Создание баз данных" .) Первый файл данных нужно поместить на 20-дисковый том, и он должен быть в два раза больше файла данных, размещаемого на 10-дисковый томе. При загрузке данных, SQL Server будет загружать в первый файл в два раза больше данных, чем во второй файл. Благодаря этому интенсивность ввода-вывода будет примерно одинаковой для всех дисков.

Реализация конфигурации

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

--
-- Сценарий SQL для создания базы данных, состоящей из нескольких файлов 
-- d:, e: и f: - для данных,  e: и f: имеют в два раза больше дисковых накопителей, 
-- чем имеется у d:, поэтому размер базы данных, распределенной для них в 
-- два раза больше, чем для d:.  l: используется для журнала. 
--

CREATE DATABASE demo 
ON
PRIMARY ( NAME = demo1,
      FILENAME = 'd:\data\demo_dat1.mdf',
      SIZE = 100MB,
      MAXSIZE = 200,
      FILEGROWTH = 20),
( NAME = demo2,
   FILENAME = 'e:\data\demo_dat2.ndf',
   SIZE = 200MB,
   MAXSIZE = 200,
   FILEGROWTH = 20),
( NAME = demo3,
   FILENAME = 'f:\data\demo_dat3.ndf',
   SIZE = 200MB,
   MAXSIZE = 200,
   FILEGROWTH = 20)
LOG ON 
( NAME = demolog1,
   FILENAME = 'l:\data\demo_log1.ldf',
   SIZE = 100MB,
   MAXSIZE = 200,
   FILEGROWTH = 20)
GO

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

Советы и рекомендации для подсистемы ввода-вывода

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

  • Размещайте журнал транзакций SQL Server на отдельном томе RAID 0 или RAID 1. Операции ввода-вывода для журнала транзакций почти на 100% являются последовательными (с переходом головок на соседнюю дорожку диска), и почти 100% из них являются операциями записи. Операции произвольного ввода-вывода для журнала транзакций бывают лишь при выполнении отката. Информация из журнала транзакций должна считываться, только когда данные для отката недоступны из кэша.
  • Сконфигурируйте достаточное количество дисковых накопителей, чтобы на каждый диск приходилось менее 85 операций ввода-вывода. Вы можете просто добавлять в массив дополнительные дисковые накопители, пока их не будет достаточно. Если операции ввода-вывода носят произвольный характер, как это обычно и бывает, то их следует распределять по всем дисковым накопителям массива.
  • Конфигурируйте тома данных как массивы RAID 5, если операции записи составляют менее 10% от общего объема ввода-вывода, и как массивы RAID 10, если более 10%.
  • Регулярно измеряйте количество операций ввода-вывода, приходящихся на один диск в секунду. Если этот показатель приближается к пределу возможностей диска, то добавляйте дополнительные дисковые накопители.
  • Распределяйте контроллеры по доступным слотам PCI вашего компьютера. Если нет особой необходимости, не ставьте несколько контроллеров на одну шину PCI.
  • Применяйте Windows 2000 RAID только на компьютерах, на которых имеется избыток ресурсов центрального процессора. Программная реализация RAID вызывает очень большую нагрузку, что может замедлить работу компьютера с недостаточно мощным центральным процессором.

Заключение

Как вы узнали из данной лекции, подсистема ввода-вывода является чрезвычайно важной компонентой вашей системы управления базы данных. Теперь вы знаете, как работают дисковые накопители и каковы их ограничения. Зная пределы возможностей дисковых накопителей, вы сможете сконфигурировать свою систему так, чтобы она функционировала в рамках этих ограничений. Зная характеристики уровней RAID, вы сможете сконфигурировать систему так, чтобы воспользоваться достоинствами того или иного уровня RAID. При проектировании своей системы вы должны тщательно спланировать состав и настройку подсистемы ввода-вывода. Настройка ввода-вывода связана с мощностью. Если ваши компоненты будут работать в пределах своих возможностей, то система сможет достичь оптимальной производительности.