Поделиться через


Работа с файлами и файловыми группами

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

Стратегия заполнения файлов и файловых групп

В файловых группах для каждого файла используется стратегия пропорционального заполнения. При записи данных в файловую группу компонент SQL Server Database Engine записывает в каждый файл количество данных, пропорциональное свободному пространству этого файла, вместо записи всех данных в первый файл до его заполнения. Затем запись производится в следующий файл. Например, если в файле f1 свободно 100 МБ, а в файле f2 — 200 МБ, то в файл f1 записывается одна часть данных, а в файл f2 — две части. Таким образом, оба файла будут заполнены примерно в одно и то же время, и достигается простейшее распределение данных между хранилищами.

Как только заполняются все файлы в группе, компонент Database Engine автоматически расширяет по одному файлу за раз, перебирая их циклически и позволяя записывать больше данных, при условии, что разрешено автоматическое увеличение базы данных. Например, файловая группа состоит из трех файлов, для всех разрешено автоматическое увеличение. Когда свободное пространство во всех файлах группы закончится, будет расширен только первый файл. Когда заполнится первый файл и в файловую группу снова нельзя будет записывать новые данные, будет расширен второй файл. Когда заполнится второй файл и в файловую группу опять нельзя будет записывать новые данные, будет расширен третий файл. Когда заполнится третий файл и в файловую группу нельзя будет записывать новые данные, будет снова расширен первый файл и т. д.

Улучшение производительности базы данных

Использование файлов и файловых групп увеличивает производительность базы данных, так как базы данных могут создаваться на нескольких дисках, нескольких контроллерах дисков или системах RAID (массивы независимых дисков с избыточностью). Например, если у компьютера четыре жестких диска, можно создать базу данных, состоящую из трех файлов данных и одного файла журнала, по одному файлу на каждый диск. При необходимости доступа к данным четыре считывающие головки могут параллельно обращаться к данным в одно и то же время. Это увеличивает скорость проведения операций над базами данных. Дополнительные сведения об аппаратных решениях см. в разделе Производительность базы данных.

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

Реализация стратегий резервного копирования и восстановления

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

При использовании нескольких файловых групп для файлов базы данных можно создавать индивидуальные резервные копии и восстанавливать их также индивидуально. В рамках простой модели восстановления можно создавать резервные копии только файлов и групп файлов для чтения. Использование резервных копий файлов может ускорить восстановление, ограничив его восстановлением только поврежденных файлов, а не всей базы данных. Например, если база данных состоит из нескольких файлов, физически расположенных на разных дисках, и на одном из дисков произошел сбой, нужно восстановить только тот файл, который находится на диске со сбоем. Дополнительные сведения см. в разделе BACKUP (Transact-SQL).

Правила проектирования файлов и файловых групп

Для файлов и файловых групп действуют следующие правила:

  • файл или файловая группа не могут использоваться несколькими базами данных. Например, файлы sales.mdf и sales.ndf, содержащие данные и объекты базы данных sales, не могут использоваться никакой другой базой данных;

  • файл может быть элементом только одной файловой группы;

  • файлы журнала транзакций не могут входить ни в какие файловые группы.

Рекомендации

Далее перечислены некоторые общие рекомендации по работе с файлами и файловыми группами.

  • Для большинства баз данных достаточно использовать один файл данных и один файл журнала транзакций.

  • При использовании нескольких файлов создайте вторую файловую группу с дополнительным файлом и сделайте ее файловой группой по умолчанию. Тогда в первичном файле будут храниться только системные таблицы и объекты.

  • Чтобы увеличить производительность, разнесите файлы и файловые группы по как можно большему числу доступных физических дисков. Объекты, активно конкурирующие за свободное пространство, поместите в разные файловые группы.

  • Используйте файловые группы для целенаправленного размещения объектов на конкретных физических дисках.

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

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

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