Главная страница
Навигация по странице:

  • Прямая адресация

  • N, i

  • Лекции и практики (1). Курс лекций и материалы для практических занятий


    Скачать 1.01 Mb.
    НазваниеКурс лекций и материалы для практических занятий
    Дата17.03.2023
    Размер1.01 Mb.
    Формат файлаdocx
    Имя файлаЛекции и практики (1).docx
    ТипКурс лекций
    #996812
    страница23 из 75
    1   ...   19   20   21   22   23   24   25   26   ...   75

    Виды адресации хранимых записей


    В общем случае адреса записей БД нигде не хранятся. При поиске данных СУБД из словаря-справочника данных берёт информацию о том, в какой обла- сти памяти (например, в каком файле и/или на каких страницах памяти) распо- ложены данные указанной таблицы. Но при этом для поиска конкретной записи (по значениям ключевых полей) система вынуждена будет прочитать всю таб- лицу. В РСУБД для ускорения поиска данных применяются индексы – специ- альные структуры, устанавливающие соответствие значений ключевых полей

    записи и "адреса" этой записи (КБД). Таким образом, вид адресации хранимых записей оказывает влияние на производительность, а также на переносимость БД с одного носителя на другой.

    Рассмотрим три вида адресации: прямую, косвенную и относительную.

    Прямая адресация предусматривает указание непосредственного место- положения записи в пространстве памяти. Прямая адресация используется, например, в системе ADABAS. Недостатком такой адресации является большой размер адреса, обусловленный большим размером пространства памяти. Кроме того, прямая адресация не позволяет перемещать записи в памяти без измене- ния КБД. Такие изменения привели бы к необходимости коррекции различных указателей на записи в среде хранения (например, в индексах, см. раздел 5.5.2), что было бы чрезвычайно трудоёмкой процедурой. Отсутствие возможности перемещать запись ведёт к фрагментации памяти.

    Указанные недостатки можно преодолеть, используя косвенную адреса- цию. Общий принцип косвенной адресации заключается в том, что в качестве КБД выступает не сам "адрес записи", а адрес места хранения "адреса записи".


    Существует множество способов косвенной адресации. Один из них со- стоит в том, что часть адресного пространства страницы выделяется под индекс страницы (рис. 5.2). Число статей (слотов) в нём одинаково для всех страниц. В качестве КБД записи выступает совокупность номера нужной страницы и но- мера требуемого слота в индексе этой страницы (значения N, i на рис. 5.2). В i слоте на N странице хранится собственно адрес записи (смещение от начала страницы).

    Рис. 5.2. Косвенная адресация с использованием индексируемых страниц

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

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

    когда данные одного объекта БД (таблицы) хранятся в отдельном файле и хра- нимая запись имеет формат фиксированной длины. Тогда в качестве значения КБД берётся порядковый номер записи, по которому можно вычислить смеще- ние от начала файла. (Пример такой адресация системы dBaseIII, dBaseIV).

    Общий принцип относительной адресации заключается в том, что адрес отсчитывается от начала той области памяти, которую занимают данные объек- та БД. Если память разбита на страницы (блоки), то адресом может выступать номер страницы (блока) и номер записи на странице (или смещение от начала страницы). В случае относительной адресации перемещение записи приведёт к изменению КБД и необходимости корректировки индексов, если они есть.

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

      1. 1   ...   19   20   21   22   23   24   25   26   ...   75


    написать администратору сайта