Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 27

Дополнительных файлов может быть несколько, а может и не быть совсем: решение о размещении БД во множестве файлов данных принимается разработчиком. Количество и имена файлов задаются при создании БД. По умолчанию SQL Server создает два файла для новой БД – файл журнала транзакций и файл данных – и присваивает файлам имена, которые включают имя БД. Например, если создаваемой БД присваивается имя MyDB, то по умолчанию она будет размещена в файлах MyDB_Data.MDF и MyDB_Log.LDF.

Файлы данных БД по умолчанию образуют одну файловую группу. При желании разработчик может выделить не одну, а несколько файловых групп, и отнести каждый файл к своей группе. Каков смысл группирования файлов данных? Дело в том, что SQL Server всегда стремится обеспечить приблизительно равное заполнение всех файлов, входящих в определенную группу. Поэтому не всегда один объект полностью размещается в одном и только одном файле данных – скажем, строки одной таблицы могут быть разнесены по разным файлам группы. Трудно представить себе ситуацию, когда размеры файлов одной и той же группы разительно отличаются друг от друга. Если в БД определена одна файловая группа (что имеет место по умолчанию), то все файлы данных будут заполняться примерно одинаково. Если же разработчик определяет в БД несколько файловых групп, то в дальнейшем, при создании объектов БД, ему следует указывать, в какой именно файловой группе должен размещаться данный объект (подробнее см. синтаксис операторов создания объектов БД).

Работа с файлами данных основана на использовании страниц размером по 8 Кбайт. Различают шесть типов страниц.

Страницы данных (Data)

Каждая страница Data хранит пользовательские и системные таблицы, не включая «тяжелые» столбцы (image, text, ntext).

Структура страницы Data представлена на рис. 3.3.

 


Рисунок 3.3 – Структура страницы данных в SQL Server

Строки, хранящиеся в странице, принадлежат только одной таблице и не обязательно располагаются строго друг за другом. Блок, выделяемый для хранения строки, называется слотом. Размер одного слота зависит от размера самих данных, который не всегда может быть определен заранее. Таблица смещений (нижний правый угол на рис. 3.3) хранит номера байтов, с которых начинаются соответствующие строки. Отсчет начинается от начала страницы. Порядок расположения смещений в таблице соответствует порядку размещения строк в области данных.

Индексные страницы (Index)

Индексные страницы хранят индексы таблиц и представлений: содержат значения индексируемых столбцов и для каждого из значений – ссылку на исходную строку таблицы.

Страницы Text/Image

Хранят значения «тяжелых» столбцов таблиц: image, text, ntext. Каждая страница Text/Image страница хранит только одно «тяжелое» значение.

Страницы Page Free Space (PFS)

Страницы PFS хранят информацию о количестве свободного пространства на страницах Data, Text/Image и Index. Степень заполнения выражается приблизительно, в процентах. Для описания одной страницы Data, Text/Image или Index выделяется один байт памяти на странице PFS, причем каждый разряд этого байта соответствует одному из следующих состояний:

·  заполнение 0%;

·  заполнение 1 – 50%;

·  заполнение 51 – 80%;

·  заполнение 81 – 95%;

·  заполнение 96 – 100%.

Несколько разрядов этого байта не могут быть одновременно установленными в единицу.

Использование страниц PFS существенно ускоряет поиск страниц Data, Text/Image и Index, имеющих достаточное количество свободного пространства для записи новых данных.

Страницы Global Application Map (GAM)

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