Опубликован: 11.12.2006 | Уровень: специалист | Доступ: свободно
Лекция 9:

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

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Правила и рекомендации

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

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

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

  • Большинство из баз данных обладает высокой производительностью, имея лишь первичный файл данных и один файл журнала транзакций. Такая конструкция базы данных рекомендуется для баз данных, не требующих особенно интенсивного ввода-вывода. Если же ваша система требует интенсивного ввода-вывода и ей нужно много дисковых накопителей, то вам, вероятно, понадобится применять пользовательские группы файлов, при помощи которых вы сможете распределить данные по нескольким дискам или массивам дисков, что обеспечит параллельный ввод-вывод.
  • Всегда размещайте файлы журналов на отдельных физических дисках, а не на дисках, содержащих файлы данных (см. "Конфигурирование и планирование подсистемы ввода-вывода" ).
  • Если вам нужно применять много файлов с данными, то используйте первичный файл данных только для системных таблиц и объектов, а для пользовательских данных и объектов создайте один или несколько вторичных файлов данных.
  • Создавайте файлы и группы файлов так, чтобы они охватывали как можно больше физических дисков – это повысит возможности параллельной работы ввода-вывода для дисков и максимизирует производительность.
  • Размещайте некластеризованные индексы интенсивно используемых таблиц в отдельных группах файлов не на тех же самых физических дисках, в которых содержатся сами данные из таблиц. Эта методика тоже позволяет осуществлять параллельный ввод-вывод для дисков. (Про индексы см. "Создание и использование индексов" .)
  • Разные таблицы, которые применяются в общих для них запросах, нужно по возможности размещать на разных физических дисках, тогда станет возможен параллельный ввод-вывод для дисков при работе алгоритма поиска данных.

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

Автоматический рост файлов

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

Файлы создаются имеющими некоторый начальный размер. После того как этот начальный размер заполнится, SQL Server увеличит размер файла на некоторую заданную величину, называющуюся приращение роста (growth increment). Когда это добавленное свободное место заполнится, SQL Server добавит еще одно приращение роста. При необходимости, файл продолжит свой рост с заданным темпом до тех пор, пока не заполнится весь диск или пока его размер не достигнет ограничения на максимальный размер файла (если таковое ограничение задано).

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

Максимальный размер файла означает именно это – максимальный размер, до которого разрешается расти файлу. Эта величина тоже задается при создании файла, но может быть изменена впоследствии при помощи Enterprise Manager или команды ALTER DATABASE. Если максимальный размер файла не задан, то SQL Server будет увеличивать размер файла до тех пор, пока не заполнится все место на диске. Чтобы не истратить все место на диске (а в этом случае произойдет ошибка в работе SQL Server), задавайте максимальный размер для каждого файла. Если даже файл дорастет до максимального размера, вы сможете увеличить этот максимальный размер при помощи оператора ALTER DATABASE. Вы также можете создать еще один файл на том же (если там имеется свободное место) или на другом диске. Новый файл должен обязательно быть в той же самой группе файлов, что и первоначальный файл. Если позволить файлу расти без ограничений, как это задано по умолчанию, то вам придется создавать файл на другом диске, имеющем свободное место.

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

Системные базы данных

При инсталляции SQL Server создаются четыре системных базы данных: master (главная), tempdb (временная), model (модель) и msdb.

  • master. Хранит информацию уровня всей системы, информацию инициализации SQL Server и настройки конфигурации SQL Server. Эта база данных также хранит все учетные записи для входа в систему, информацию о наличии всех остальных баз данных и о местоположении первичного файла для всех пользовательских баз данных. Всегда имейте свежую копию базы данных master – главной базы данных.
  • tempdb. Хранит временные таблицы и временные хранимые процедуры. Эта базы данных используется также для хранения прочей временной информации, нужной для работы SQL Server, например для сортировки данных. При каждом запуске SQL Server создается новая чистая копия базы данных tempdb. Затем, если нужно, эта база данных растет автоматически. Если для хранения ваших временных данных требуется много места, то можно увеличить стандартный размер этой базы данных, применив команду ALTER DATABASE.
  • model.Служит образцом (шаблоном) для всех остальных баз данных, создаваемых на данной системе, в том числе и для tempdb. При создании базы данных ее начало создается как копия содержимого базы данных model, а всё остальное заполняется пустыми страницами. База данных model обязательно должна иметься в системе, потому что она применяется для воссоздания базы данных tempdb при каждом запуске SQL Server. Вы можете изменять базу данных model, добавляя туда пользовательские (определяемые пользователем) типы данных, таблицы и т.д. Если вы измените базу данных model, то каждая созданная вами база данных будет иметь измененные атрибуты.
  • msdb. Содержит таблицы, которые SQL Server Agent применяет для планирования заданий и оповещений и для записи операторов (здесь операторы – это люди, которые отвечают за работу заданий и оповещений). Эта база данных также хранит таблицы, применяемые для репликации.

Каждая из этих системных баз данных имеет свои собственные первичный файл данных и файл журнала. Системные базы данных хранятся в папке для хранения системных файлов, назначенной вами при инсталляции SQL Server.

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Светлана Красюк
Светлана Красюк
Россия, г.Кемерово ул.Весенняя д.21 кв.29, КузГТУ, 2003