Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt.rtf
Скачиваний:
282
Добавлен:
19.08.2013
Размер:
4.05 Mб
Скачать

20.4.1. Сегменты

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

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

Каждый сегмент в базе данных содержит заголовок, который описывает характеристики этого сегмента и оглавление (список) экстентов в этом сегменте.

Сегменты данных. Каждая некластеризованная таблица или кластер в БД ORACLE имеет единственный сегмент данных, содержащий все данные этого объекта.

Сегменты индекса. Каждый индекс в базе данных ORACLE имеет единственный сегмент индекса, содержащий все данные этого индекса.

Сегмент данных таблицы и сегмент индекса не обязаны размещаться в одном и том же табличном пространстве.

Сегменты отката. Каждая база данных содержит один или несколько сегментов отката. Сегмент отката - это часть базы данных, в которой записываются действия транзакций, которые, возможно, придется отменить.

Временные сегменты. При обработке запросов ORACLE часто требует временного рабочего пространства для промежуточных этапов обработки предложения SQL. Это дисковое пространство, называемое ВРЕМЕННЫМ СЕГМЕНТОМ, распределяется автоматически.

20.4.2. Экстенты

Экстент - это смежные блоки данных, выделенные для хранения специфического типа информации. При создании объекта, такого как таблица или индекс, создается сегмент этого объекта в предназначенном табличном пространстве.

При распределении нового экстента ORACLE отыскивает в табличном пространстве, содержащем сегмент, первый свободный непрерывный участок блоков данных, размер которого больше запрашиваемого размера, по крайней мере, на один блок. Если запрашиваемый участок непрерывных блоков не найден, ORACLE соединяет все свободные блоки данных в соответствующем табличном пространстве, так что формируются группы непрерывных блоков большего размера. (Фоновый процесс SMON периодически объединяет смежное свободное пространство.)

20.4.3. Блоки данных

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

Формат блока данных, независимо от того, содержит ли он данные таблицы, индекса или кластера, включает: Общий и переменный заголовок, Оглавление таблиц, Оглавление строк, Свободное пространство, Строки данных.

Заголовок содержит общую информацию блока, такую как адрес блока и тип сегмента. В среднем, суммарный размер фиксированной и переменной частей блока составляют от 84 до 107 байт.

Оглавление таблиц содержит информацию о том, строки каких таблиц размещены в этом блоке.

Оглавление строк содержит информацию о действительных строках в блоке (включая адреса каждой порции строки в области данных строк). После того, как в оглавлении строк распределено пространство, это пространство не освобождается при удалении строки. Поэтому блок, который когда-то содержал до 50 строк, по-прежнему имеет 100 байт в заголовке для оглавления строк. Это пространство будет использовано повторно лишь тогда, когда в блок вставляются новые строки.

Строки данных содержатт данные таблицы или индекса. Строки могут переходить из блока в блок, если все данные строки не умещаются в один блок. В таком случае данные этой строки сохраняются в виде цепочки блоков данных, резервируемых в этом сегменте. Если строка в блоке данных обновляется так, что общая длина строки увеличивается, а свободное пространство в блоке заполнено, то данные всей строки мигрируют, т.е. переносятся в, при условии, что в новом блоке поместится вся строка. На месте мигрировавшей строки записывается указатель на новый блок, содержащий мигрировавшую строку; ROWID мигрировавшей строки не изменяется.

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

Соседние файлы в предмете Базы данных