Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций СБД.doc
Скачиваний:
23
Добавлен:
13.11.2019
Размер:
1.94 Mб
Скачать
  1. Организация доступа к данным

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

    1. Страницы и файлы

За обработку файлов в операционной системе отвечает программа обслуживания файловой системы (диспетчер файлов) и программа управления дисковой памятью (диспетчер дисков). Запись и считывание данных с диска осуществляется блоками, которые называются страницами и имеют размер в зависимости от операционной системы 2 или 4 килобайта. Каждая страница имеет свой адрес PageID, который указывает на ее местонахождение на внешнем носителе. За обработку страниц отвечает диспетчер дисков. Он же обеспечивает их запись и чтение.

Итак, файл – это набор страниц. Управление файлами выполняет диспетчер файлов. При создании файла он запрашивает у диспетчера дисков необходимое число страниц. Выделенному набору страниц присваивается адрес FileID. Каждой странице внутри него дается некий логический ID, который просто указывает порядковый номер страницы в наборе, а не физическую последовательность записи на диске. Диспетчер файлов обращается к диспетчеру дисков, запрашивая считывание или запись логических страниц, принадлежащих файлу. Как правило, диспетчер дисков ведет каталог, в котором хранятся все FileID и указатели принадлежности к каждому набору страниц.

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

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

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

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

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

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

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