Изучи сервер Windows SQL 2000 за 15 минут в неделю:
 

Основы создания баз данных

от Mike Aubert

 

Добро пожаловать в пятую статью моей серии «Изучи сервер Windows SQL 2000 за 15 минут в неделю». На прошлой неделе мы рассмотрели Диспетчер Предприятия (Enterprise Manager) сервера SQL. Мы узнали, как зарегистрировать ваш сервер SQL, как объединить сервера в группы, а также о том, какие базы данных устанавливаются на вашей системе по умолчанию. На этой неделе мы узнаем, какие файлы образуют базу данных, а также создадим нашу первую базу данных. В данную статью вошли следующие темы:

  • Файлы базы данных;
  • Группы файлов базы данных;
  • Создание базы данных.

Файлы базы данных

Структура хранения данных в базах данных сервера SQL 2000 образована, как минимум, двумя системными файлами. Каждая база данных должна иметь хотя бы один файл данных, используемый для хранения объектов базы (таблиц, представлений, операций хранения и т.д.) и одного файла журнала, используемого для информации о транзакциях. Кроме того, каждая база данных имеет свои собственные файлы, т.к. вы не можете делать эти файлы общими для нескольких баз данных.

Файлы данных хранят объекты, а также данные внутри объектов. Первый файл, который вы создаете, называется главным файлом данных (Primary data file). Если вы хотите создать дополнительные файлы данных для вашей базы данных, они создаются как дополнительные файлы данных (Secondary data files).

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

Таблица, приведенная ниже, дает описание этих трех видов файлов:

Тип файла

Описание

Главный файл данных

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

Дополнительный файл данных

База данных может содержать один или несколько дополнительных файлов данных, но может обойтись и без них. Этот тип файла имеет расширение .NDF

Файл журнала транзакций

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

Простая база данных может хранить все свои данные в главном файле данных и вести только один файл журнала. С другой стороны, более сложные базы данных могут содержать, например, главный файл данных, три дополнительных файла данных и два файла журналов. Использование сложной базой данных нескольких файлов позволяет распределить данные на несколько жестких дисков.

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

Когда данные сохраняются, они помещаются в прилегающие друг к другу 8 килобайтные блоки дискового пространства, называемые страницы. Если отбросить байты, необходимые для управления страницей, остается 8060 байт для хранения данных. В связи с этим стоит заметить и принять к сведению, что строки не могут объединять несколько страниц. Следовательно, максимальный размер строки равен 8060 байт.

Для управления страницами в файле данных, страницы группируются в т.н. экстенты (extents – непрерывные области памяти). Эти области образуются группами по 8 прилегающих друг к другу страниц данных (64 кB). Эти области могут быть разделены на две категории: смешанные экстенты, которые содержат данные восьми объектов базы данных или однородные экстенты, которые содержат данные только одного объекта базы данных. Когда вы создаете новый объект, он занимает пространство в смешанном экстенте. По мере того, как он становится больше, он занимает все 8 страниц данных и экстент становится однородным. Использование сервером SQL смешанных и однородных экстентов помогает экономить дисковое пространство в случае работы с мелкими объектами.

Группы файлов (filegroups) базы данных

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

Когда сервер SQL распределяет экстенты таблицам, он делает это пропорционально свободному пространству во всех файлах в группе файлов. Например, пусть ваша группа файлов содержит два файла, один из которых имеет 50 МВ свободного пространства и второй – 100 МВ. Каждому экстенту, размещенному в первом файле, будет соответствовать два экстента, размещенных во втором файле. Таким образом, оба файла данных будут заполнены приблизительно в одно время.

Группы файлов также позволяют контролировать, в каком файле будет сохранена таблица. Например, пусть у вас есть 4 жестких диска с дополнительными файлами данных на каждом из них. Пусть в нашей базе данных есть 2 большие таблицы, над которыми нам часто приходиться выполнять операции объединения. Для того чтобы получить максимальную производительность, мы должны создать две группы файлов, каждая из которых будет содержать два из четырех файлов данных, а затем поместить каждую таблицу в разные группы файлов. Мы рассмотрим подробнее, как помещать таблицы и индексы в определенные группы файлов, когда будем создавать свои таблицы в последующих статьях.

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

Когда вы создаете новый объект, он автоматически помещается в Группу по умолчанию (Default), до тех пор, пока вы не установите иного местоположения. Группой файлов по умолчанию может быть назначена любая группа по вашему желанию, однако по умолчанию, ею является Главная группа файлов. Например, если вы создали новую группу, называемую “MainStore” и назначили ее группой по умолчанию, все новые таблицы, которые вы создадите, будут помещаться в группе файлов “MainStore”.

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

Создание базы данных

Итак, достаточно слов, давайте создадим нашу первую базу данных. Запустите Диспетчер Предприятия и разверните дерево SQL до тех пор, пока не увидите папку “Databases” вашего сервера.

Щелкните правой кнопкой мыши на папке Databases и выберите из появившегося меню опцию “New Database…

В окне ввода наберите имя базы данных “First DB

Хотел бы заметить, что в этом окне существует возможность установить способ сортировки для данной базы данных, отличный от установленного для сервера по умолчанию. Если вы забыли, что означает способ сортировки, вернитесь назад, к моей статье «Основы установки…». В данном примере мы оставим настройки, установленные по умолчанию.

Откроем вкладку “Data Files”.

Верхняя часть вкладки Data Files показывает вам все файлы данных, которые образуют эту базу данных. Как вы можете видеть, Диспетчер Предприятия уже добавил Главный файл данных для вас. Логическое имя файла – FirstDB_Data, а его физическое имя – FirstDB_Data.MDF. Файл расположен в папке Data, которую вы определили в ходе установки сервера SQL. Логическое имя файла – это имя, которое сервер SQL использует для внутренних ссылок на файл, тогда как физическое имя – это имя файла операционной системы.

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

Нижняя половина вкладки Data Files позволяет вам установить значение Автоматического роста файла (Automatic file growth) для каждого файла, образующего базу данных. Когда база данных использует все доступное пространство файла данных, вы можете сделать так, чтобы сервер SQL автоматически увеличил файл до необходимых размеров. Первая из опций роста позволяет вам установить, насколько сервер SQL может увеличить файл данных. Вы можете выбрать либо фиксированное значение в мегабайтах или установить проценты от текущего значения файла базы данных. Вы также можете установить максимальный размер для файла данных. Если размер файла достигнет максимального значения, дальнейший автоматический рост файла происходить не будет.

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

Нажмите на вкладку “Transaction Log”.

Настройки на вкладке Transaction Log аналогичны настройкам на вкладке Data Files, за одним исключением – отсутствием опции File Group. Группы файлов используются только для файлов данных и не используются для файлов журналов.

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

Вновь созданная нами база данных появилась сейчас в папке Databases. Если вы захотите исследовать ее, то заметите, что она абсолютно похожа на базу данных model. Это произошло потому, что все вновь создаваемые базы данных являются копией данной базы. Все системные объекты и все другие объекты, которые мы создали в шаблонной базе данных, автоматически добавляются в базу данных, которую мы создаем.

Другой путь создания базы данных – использование мастера Create Database Wizard. Для запуска данного мастера в Диспетчере Предприятия выберите опцию “Wizards…” из меню “Tools”.

Затем разверните узел Database, выберите “Create Database Wizard” и нажмите кнопку ОК.

И снова: мы закончили все темы данной недели. На следующей мы проведем немного больше времени, изучая управление базами данных. И как всегда …если у вас возникнут какие-либо технические вопросы, пожалуйста, присылайте их на доску объявлений сайта 2000Trainers.com SQL message board. Нетехнические вопросы, комментарии и обратная связь – по адресу моей электронной почты. Я надеюсь, что вы найдете эти статьи полезными и был бы рад узнать ваше мнение о них.

Mike Aubert, MCSE, MCDBA,  MCSD.

Hosted by uCoz