Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

Управление свободным пространством блока

Введение

 

Цель физического проектирования – реализация БД в целевой СУБД.

Эффективное физическое проектирование непосредственно влияет на производительность БД.

 

Задачи этапа физического проектирования:

 

- принятие решения о физических параметрах хранения информации (выбор и обоснование параметров хранения, использование кластеров, физическое размещение файлов с информацией разных типов и т.д.);

- определение текущих и прогнозируемых размеров объектов БД (таблиц, индексов, сегментов отката и т.д.);

- определение размера системной глобальной области (SGA);

- планирование реализации и т.д.

 

Размещение объектов и выбор параметров их хранения осуществляется так, чтобы обеспечить:

 

- восстанавливаемость;

- оптимальную производительность;

- гибкость.

 

Блок данных – наименьшая логическая единица хранения в БД Oracle.

Экстент – набор смежных блоков БД.

Сегмент – набор экстентов, выделенных для структуры данных конкретного типа в пределах одной логической области хранения (табличное пространство).

Например, данные каждой таблицы хранятся в её сегменте данных, а данные индекса – в сегменте индекса.

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

 

 

Рис. 1. Соотношение между сегментами, экстентами и блоками

 

Блоки данных

 

Блок данных соответствует определённому числу байтов на диске, кратен блоку ОС и задаётся при создании БД.

Независимо от того, что хранится в блоке (таблица, индекс или кластер) его формат одинаков.

 

 

Заголовок – содержит общую информацию блока: адрес блока, тип сегмента (данные, индекс, откат и т.д.).

Каждая строка требует 2 байта в заголовок.

Директория таблиц – содержит информацию о таблицах, имеющих строки в этом блоке.

Директория строк – содержит информацию о реальных строках в блоке: число строк, ROWID строки, адрес каждого атрибута в области данных строки и др.

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

Данные блока – содержит данные таблицы или индекса (строки могут расщепляться на несколько блоков).

Свободное пространство – используется для добавления и обновления строк, а также для точек входа транзакций, обращающихся к строкам из этого блока (для большинства ОС этот размер равен 23 байтам).

 

Управление свободным пространством блока

 

Для управления свободным пространством блока существуют два параметра команды CREATE TABLE:

- PCTFREE;

- PCTUSED.

Параметры задаются при создании или изменении таблиц (индексов).

Параметр PCTFREE устанавливает процент зарезервированного в блоке пространства для последующих возможных обновлений строк этого блока.

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