Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Microsoft SQL Server 2005 для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

4.3. Файлы баз данных и журналов транзакций

Главные и дополнительные файлы баз данных в SQL Server 2005, применение неформатированных разделов, оптимальное размещение файлов баз данных и журналов транзакций

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

Вначале приведем немного общих сведений.

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

В каждой базе данных обязательно есть один главный (primary) файл. По умолчанию для него используется расширение mdf (хотя использовать именно такое расширение не обязательно — для любых файлов баз данных и журналов транзакций расширения могут быть любыми, а могут и отсутствовать). Удалять этот файл нельзя. Для базы данных можно создать и дополнительные файлы (secondary), для которых по умолчанию используется расширение ndf. Точно так же есть главный и дополнительные файлы у журналов транзакций, для них по умолчанию используется расширение ldf.

В принципе, база данных может вообще обходиться без файлов. Вся необходимая информация при этом будет храниться на неформатрированном диске. Такой вариант называется использованием неформатированных разделов (raw partitions). Однако, в отличие от связки Unix/Oracle, связка Windows/SQL Server ничего не выигрывает от применения неразмеченных разделов, и поэтому этот вариант используется редко.

А теперь подробнее остановимся на тех решениях, которые вам придется принимать при создании базы данных.

Первое решение — это где будут размещены файлы баз данных и журналов транзакций. По умолчанию и файлы баз данных, и файлы журналов помещаются в каталог С:\Program Files\Microsoft SQL Server\MSSQL.X\MSSQL\Data (где X — номер экземпляра SQL Server 2005). Такое размещение, конечно, не оптимально.

Идеальный вариант, с точки зрения размещения файлов баз данных, — поместить их на отдельный внешний аппаратный RAID-массив. Причем на этом RAID-массиве не должно быть ничего, кроме файлов базы данных, и, кроме того, на нем должно быть как минимум 50% пустого пространства. Такой вариант обеспечивает ряд преимуществ:

q      RAID-массив (в зависимости от выбранного уровня) обеспечивает высокую производительность и отказоустойчивость;

q      внешний RAID-массив делает процесс восстановления больших баз данных предельно простым и быстрым. Если на сервере возникли какие-то проблемы, а с файлами базы данных все в порядке, достаточно просто подключить RAID-массив к другому серверу и присоединить базу данных (см. разд. 4.2.3);

q      если вы выберете внешний RAID-массив, который входит в список совместимого оборудования (Hardware Compatibility List) для кластеров Windows Server, то при необходимости вы сможете еще больше повысить отказоустойчивость за счет создания кластера;

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

Конечно, внешний RAID-массив — это идеальный вариант. Но на многих предприятиях денег на него может просто не быть. В этом случае рекомендуется, по крайней мере, использовать для файлов баз данных отдельный быстрый жесткий диск. Категорически не рекомендуется помещать на тот же диск, где находятся файлы баз данных, программные файлы операционной системы и SQL Server. Помните также, что на контроллерах доменов для разделов, на которые помещается база данных Active Directory (по умолчанию она находится в каталоге C:\Windows\NTDS), отключается кэширование на запись: падение производительности может быть просто устрашающим.

Конечно же, никогда нельзя сжимать рабочие файлы баз данных средствами NTFS или помещать их на сжатые диски.

Теперь — о размещении файлов журналов транзакций.

Требования по производительности к ним намного меньше, чем к файлам баз данных (одна из причин связана с тем, что в файлы журналов транзакций записываются только изменения, которые вносятся в базу данных — команды SELECT на них, за исключением специальных случаев, влияния не оказывают). Как размещать эти файлы, зависит от требований к базе данных и бюджета вашего предприятия. Далее представлены разные варианты, начиная от наиболее желательного и заканчивая наименее удачным:

q      второй RAID-массив;

q      отдельный набор дисков на том же RAID-массиве, что и файлы баз данных;

q      два обычных диска, которые зазеркалированы по отношению друг к другу;

q      просто обычный отдельный диск;

q      размещение на том же диске, на котором размещены файлы баз данных (этот вариант наименее желателен, но именно он по умолчанию выбирается SQL Server 2005 в расчете на однодисковые системы).

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

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

Конечно, размер файлов баз данных полностью зависит от задачи, для которой используется эта база данных. Однако у вас есть выбор — сразу создать большие файлы баз данных или настроить для них режим автоматического приращения, когда файлы при необходимости будут автоматически увеличиваться. Если такая возможность имеется, всегда нужно с самого начала создавать файлы максимального размера (или, по крайней мере, настраивать автоприращение сразу большими частями, например, в несколько Гбайт), даже несмотря на то, что в течение продолжительного времени значительная часть этих файлов использоваться не будет. Аргументация здесь проста — таким образом вы снижаете фрагментацию файлов баз данных, повышая производительность. По умолчанию для файлов баз данных настраивается худший вариант — автоприращение маленькими "порциями": 1 Мбайт для файлов базы данных и 10% от существующего размера для файлов журналов транзакций.

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

Настройку режима автоприращения при помощи графического интерфейса можно выполнить в окне New Database при создании новой базы данных или на вкладке General свойств базы данных в SQL Server Management Studio. Режим автоприращения устанавливается в соответствующей строке для каждого файла базы данных нажатием на кнопку в столбце Autogrowth (Автоматический рост) свойств данного файла (см. рис. 4.1).

Если вы уже создавали файлы баз данных большого размера (гигабайты и десятки гигабайт) в SQL Server предыдущих версий, то могли заметить, что их создание требует довольно длительного времени. Связано это было с тем, что SQL Server предыдущих версий "форматировал" пространство внутри создаваемых файлов данных, заполняя его двоичными нулями. В SQL Server 2005 появилась новая возможность, которая называется немедленной инициализацией файлов (instant file initialization). Она позволяет не заполнять файлы данных нулями, что резко сокращает время, требуемое для создания файлов баз данных или их увеличения. Однако эта возможность используется только при двух условиях:

q      SQL Server работает под управлением операционной системы Windows Server 2003 или Windows XP;

q      учетная запись, от имени которой работает SQL Server, обладает специальной привилегией операционной системы SE_MANAGE_VOLUME_NAME (по умолчанию такая привилегия есть у встроенной группы Administrators).

Эти же самые принципы относятся и к настройке автоприращения файлов журналов транзакций (заметим только, что немеделенная инициализация файлов при создании файлов журналов не используется). Однако для файлов журналов транзакций возникает еще один вопрос: а какой размер журнала транзакций нужен для конкретной базы данных? Ответ на этот вопрос зависит от множества факторов:

q      первый фактор — в каком режиме используется база данных. Если это база данных OLTP (т. е. данные в ней изменяются постоянно, чаще всего пользователями при помощи клиентских приложений), к которой относится абсолютное большинство используемых на предприятиях баз данных, то Microsoft рекомендует устанавливать для журналов транзакций размер от 10 до 25% от общего размера файлов баз данных. Для баз данных Data Warehouse (архивные хранилища, которые в обычном режиме используются только на чтение и пополняются, как правило, средствами массовой загрузки данных или пакетами SSIS/DTS) достаточно будет и нескольких процентов от объема файлов баз данных;

q      второй фактор — какой режим восстановления настроен для базы данных. Режим восстановления (recovery model) настраивается на вкладке Options свойств базы данных, подробнее о нем будет рассказано в разд. 4.5. Режим восстановления Simple предъявляет минимальные требования к размеру файлов журнала (поскольку старые записи в журнале сразу же перезаписываются), а режим восстановления Full требует файлов журнала намного большего размера;

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

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru