Параметры PCTFREE и PCTUSED.
Оба эти параметра служат для управления пространством в блоках данных. Точнее
PCTFREE и PCTUSED позволяют управлять использованием свободного пространства
для вставки и обновления строк в блоках данных.
Параметр PCTFREE устанавливает процент памяти блока, резервируемой для
возможных обновлений строк, уже содержащихся в блоке. Как только блок данных
будет заполнен до процента PCTFREE, в этот блок не возможно будет вставить
новые строки до тех пор, пока процент памяти используемой в этом блоке не
упадет ниже значения параметра PCTUSED. Параметр PCTUSED задает нижнюю границу,
достижение которой вызывает возврат блока данных в список свободных областей.
Оба параметра настраиваются в паре. Устанавливая разные варианты значений для
этих параметров, можно оптимизировать использование дискового пространства.
Параметры PCTFREE и PCTUSED задаются при создании таблиц и индексов и
указываются в конструкциях CREATE TABLE и CREATE INDEX соответственно, а так же
могут быть изменены для уже созданных таблиц и индексов при помощи конструкций
ALTER TABLE и ALTER INDEX.
При настройке PCTFREE и PCTUSED необходимо помнить о двух ограничения.
Во-первых, их сумма не может превышать 100. Во-вторых, PCTFREE нельзя
устанавливать равным 0, так как это вызовет проблемы распределения памяти
для внутренних операций.
Дальше я приведу несколько стандартных вариантов установки данных параметров:
1. Большая часть запросов содержит операторы UPDATE, которые увеличиваю размеры
записей.
PCTFREE = 20
PCTUSED = 40
PCTFREE установлен в 20, чтобы оставить достаточно места для записей,
увеличивающихся в размере при обновлении. PCTUSED оставлен по умолчанию.
2. В основном запросы состоят из операторов INSERT и DELETE, а операторы DELETE
в среднем не увеличивают размер записи.
PCTFREE = 5
PCTUSED = 60
PCTFREE установлен в 5, так как в основном длины записей не изменяются.
PCTUSED установлен в 60, чтобы избежать дополнительного выделения большого
числа блоков данных, так как память, освобождаемая оператором DELETE, почти
сразу же используется оператором INSERT.
3. Данные из таблицы выбираются в основном на чтение.
PCTFREE = 5
PCTUSED = 90
PCTFREE установлен в 5, так как операторы UPDATE используются редко.
PCTUSED установлен в 90, так что для хранения данных используется большая часть
блока. В результате уменьшается общее число используемых блоков.