Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700276.doc
Скачиваний:
11
Добавлен:
01.05.2022
Размер:
1.94 Mб
Скачать

7.2. Управление страницами

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

На начальном этапе БД совсем не содержит данных, но в ней имеется набор пустых страниц, последовательно пронумерованных начиная с номера один, в котором содержатся все страницы диска, за исключением страницы с нулевым номером, которой отводится осо­бая роль. Для размещения записей с данными X диспетчер файлов создаст набор страниц и разместит на них данные X. С этой целью диспетчер дисков переместит соответствующее количество страниц из набора пустых страниц и пометит их как набор страниц данных ввода-вывода на основе страниц от СУБД и предоставляет ей возможность вести работу только с хранимыми записями и фай­лами. Такая работа, выполняемая диспетчером файлов, называет­ся управлением хранимыми записями.

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

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

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

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

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

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

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