- •Хранение баз данных
- •Табличные области
- •Табличная область system
- •Другие табличные области
- •Оперативные и отключенные табличные области
- •Постоянные и временные табличные области
- •Табличные области только для чтения и чтения/записи
- •Дополнительные сведения о файлах данных
- •Число файлов данных для табличной области
- •Использование пространства файлов данных
- •Сращивание свободного пространства в файлах данных табличной области
- •Размеры файлов данных
- •Повреждение файлов данных
- •Оперативные и отключенные файлы данных
- •Управляющие файлы
- •Зеркально отображенные управляющие файлы
- •Сегменты, экстенты и блоки данных
- •Сегменты данных и индексные сегменты
- •Временные сегменты
- •Временные табличные области
- •Сегменты отката
- •Запись информации в сегменты отката
- •Сегмент отката system
- •Несколько сегментов отката
- •Назначение конкретных сегментов отката
- •Оперативные и отключенные сегменты отката
- •Общие и частные сегменты отката
- •Отложенные сегменты отката
- •Другие функции сегментов отката
- •Блоки данных
- •Выделение блоков данных
- •Доступность блоков данных и списки свободных блоков
- •Сцепление строк и размер блока данных
- •Параметры хранения объектов
- •Размещение табличных областей
- •Параметры для экстентов
- •Initial 500k
- •Специальные параметры хранения данных для сегментов отката
- •Initial 100k
- •Параметры для блоков данных
- •Параметры для списков свободных блоков
- •Пороги блоков
- •Элементы транзакций
- •Установки по умолчанию для хранения объектов
- •Установки по умолчанию для пользователей
- •Установки по умолчанию для табличных областей
- •Initial 100k
- •Уникальность хранения мультимедийных данных
- •Дополнительные сведения о локаторах lob
- •Разделение данных
- •Разделенные таблицы
- •Размещение строк в разделах данных
- •Использование maxvalue
- •Разделенные индексы
- •Варианты создания разделенных индексов
- •Равноразделенные объекты
- •Глобальные разделенные индексы
- •Имена таблиц с учетом разделов
- •Управление разделением
- •Соответствие индексов и таблиц
- •Контрольные вопросы.
Initial 100k
NEXT 100K
MINEXTENTS 3
MAXEXTENTS 100
OPTIMAL 310K);
Параметры для блоков данных
В сегментах любого типа можно управлять процессом распределения пространства блоков данных. Ниже приведены различные параметры хранения информации, имеющие отношение к блокам данных.
Параметры для списков свободных блоков
При создании таблицы, кластера, индекса или моментального снимка следует указывать число групп списков свободных блоков, которое нужно создать для соответствующего сегмента. Группа списков свободных блоков (free list group) - это группа, состоящая из одного или нескольких списков свободных блоков для сегмента объекта хранения данных. По умолчанию для каждого сегмента данных или индексного сегментаOracleсоздает одну группу, в которой находится один список. При использованииOracleс параллельным сервером можно уменьшить число конфликтов между серверами за просмотр списков свободных блоков и повысить производительность системы, создав несколько групп по несколько списков в каждой. Например, с помощью следующего оператора создается индекс, имеющий несколько групп списков свободных блоков по несколько списков в каждой:
CREATE INDEX sales.customer_name
ON sales.customers (lastname, firstname)
STORAGE(
... другие параметры хранения ...
FREELIST GROUPS 2
FREELISTS2);
Пороги блоков
Выше было рассказано, что по мере заполнения или освобождения блоки данных могут включаться в списки свободных блоков сегментов и исключаться из них. Для таблиц, кластеров, индексов и моментальных снимков существуют два параметра, PCTFREEиPCTUSED, позволяющие вручную управлять включением блоков в списки свободных блоков и исключением из них:
PCTFREE- это максимальный порог, определяющий тот объем пространства блока данных, который необходимо оставить для последующих операций обновления информации.
PCTUSED- это минимальный порог, определяющий момент включения блока данных в список свободных блоков соответствующего сегмента. Например, порогPCTUSEDпо умолчанию для всех сегментов установлен равным 40%. Таким образом, когда транзакции удаляют строки из блока данных, и он остается заполненным только на 39%,Oracleвозвращает его обратно в список свободных блоков соответствующего сегмента.
На рис. $.10 демонстрируется включение блоков данных в списки свободных блоков сегмента и исключение из них при помощи параметров PCTFREEиPCTUSED.
Представим себе таблицу ORDERS, содержащую небольшие строки, длина которых часто увеличивается во время выполнения транзакциями операций обновления строк. С помощью следующего оператора создается таблицаORDERS, в которой оставлено место на случай увеличения строк, а блоки возвращаются в список свободных блоков, когда они частично освобождаются:
CREATE TABLE sales.orders
(... описания столбцов ...)
PCTFREE 20
PCTUSED 60 ;
Элементы транзакций
Когда блок данных объекта обновляется транзакцией, Oracleвыделяет в этом блоке элемент транзакции (transaction entry). Это небольшой участок дисковой памяти в заголовке блока данных, в которомOracleхранит внутреннюю обрабатываемую информацию до тех пор, пока транзакция не завершится или пока не будет выполнен её откат. Можно установить два параметра хранения,INITRANSиMAXTRANS, которые применяются для настройки способа выделения элементов транзакций в блоках таблиц, кластеров данных, индексов или моментальных снимков:
INITRANSопределяет объем пространства заголовка блока данных, которое предварительно выделяется для элементов транзакций. Когда ожидается, что с блоком данных будут параллельно работать много транзакций, можно заранее выделить дополнительное пространство для элементов транзакций и избежать тем самым расходования ресурсов на динамическое выделение этого пространства.
MAXTRANSограничивает число транзакций, которые могут параллельно использовать блок данных.