Лекции / Л-8 - Организация среды хранения
.pdfКосвенная адресация хранимых записей (3)
В качестве КБД записи выступает совокупность номера нужной страницы и номера требуемого слота в индексе этой страницы (значения N, i ).
В i-м слоте на N-й странице хранится собственно адрес записи (смещение от начала страницы).
При перемещении записи она остается на той же странице, и слот по-прежнему указывает на нее (меняется содержимое, но не сам слот).
Косвенная адресация хранимых записей (4)
Если запись не вмещается на страницу, она помещается на специально отведенные в данной области страницы переполнения, и соответствующий слот продолжает указывать на место ее размещения.
Этот подход позволяет:
перемещать записи на странице,
исключать фрагментацию,
возвращать освободившуюся память для повторного использования.
Относительная адресация хранимых записей (1)
Простейший вариант относительной адресации может использоваться, когда данные одного объекта БД (таблицы) хранятся в отдельном файле, и хранимая запись имеет формат фиксированной длины.
Тогда в качестве значения КБД берется порядковый номер записи, по которому можно вычислить смещение от начала файла.
Общий принцип относительной адресации состоит в том, что адрес отсчитывается от начала той области памяти, которую занимают данные объекта БД.
Относительная адресация хранимых записей (2)
Если память разбита на страницы, то адресом может выс-
тупать номер страницы и номер записи на странице
(или смещение от начала страницы).
Перемещение записи и ведет к изменению КБД и необ-
ходимости корректировки индексов, если они есть.
Некоторые СУБД при необходимости перемещения записи оставляют КБД прежним. Физически запись – на новом месте, а по старому адресу – новый адрес записи.
Это позволяет не менять КБД и не перестраивать индек-
сы, но приводит к увеличению времени доступа к
записи (два физических чтения вместо одного).
Структура идентификационного номера записи
Идентификатор записи не изменяется во все время ее существования. Состоит из номера страницы, на которой запись находится, и байта смещения слота от конца страницы (который в свою очередь содержит байт смещения записи от начала страницы).
Управление свободным пространством памяти на страницах
B-дерево