Предварительная разметка дискового пространства для таблицы
Для ускорения вставки в таблицу большого количества данных и повышения
эффективности работы при изменении данных необходимо разметить пространство
заранее (при создании таблицы) при помощи параметров MAXROWID
, MAXROW
, EXTSIZE
, PCTFILL
,
PCTFREE
, BLOBPCT
. В этом случае при вставке данных не будет происходить
динамического увеличения занимаемого таблицей пространства (до тех пор, пока
вставляемые данные будут "умещаться" в установленных пределах), что
положительно скажется на производительности. По умолчанию установлены
усредненные параметры, достаточные для работы.
Значения параметров:
-
MAXROWID задает максимальное планируемое количество номеров записей (ROWID) для создаваемой таблицы. По умолчанию значение этого параметра равно 1022;
-
MAXROW задает максимальное планируемое число записей, которые будут одновременно храниться в таблице. По соображениям эффективности не следует задавать значение параметра MAXROW большим значения MAXROWID. Если значение MAXROW не задано, то оно также устанавливается равным значению MAXROWID. При задании этого параметра в БД происходит выделение пространства для таблицы под указанное количество записей;
-
EXTSIZE задает количество страниц для расширения файлов таблиц и рабочих файлов, при превышении установленных начальных размеров. Значение по умолчанию 0 (расширение выполняется на 1/32 от текущего размера файла с выравниванием до кратного 64 Кбайт, но не больше чем на 32 Мбайт).
Недостаточное в конкретной задаче значение параметра EXTSIZE (медленное расширение файлов таблиц, рабочих файлов по одной странице) может привести к резкому падению скорости загрузки данных, индексов, BLOB-значений или падению скорости выполнения SQL-запросов, поэтому рекомендуется установить требуемое в конкретной задаче значение.
Пример
SET EXTSIZE 256;
-
PCTFILL задает ожидаемое отношение среднего размера упакованной записи к среднему размеру неупакованной (в процентах). При выборе значения PCTFILL предполагается, что количество упакованных записей с длиной меньше, чем PCTFILL, будет незначительным.
Это целое положительное число, не превышающее 100. По умолчанию оно равно 100%. Параметр влияет на размечаемое пространство вместе с параметром MAXROWID.
Значение параметра PCTFILL может быть критичным тогда, когда в таблице есть строковые поля большого размера, обычно заполняемые значительно более короткими значениями.
Оптимальный процент ожидаемого отношения среднего размера упакованной записи к среднему размеру неупакованной находится в пределах от 75% до 95%. В случае, если пользователь затрудняется указать значение PCTFILL, рекомендуется при создании таблицы задать его равным 90%.
-
PCTFREE определяет для файла данных порог свободного места страницы в процентах. Страницы, заполненные меньше указанного порога, считаются свободными для добавления информации. В результате при добавлении новых данных в эту страницу можно добавить сразу несколько записей, прежде чем она будет помечена как заполненная, что в конечном итоге приводит к снижению фрагментации данных в файлах таблицы;
-
BLOBPCT задает процент заполнения BLOB-страниц создаваемой таблицы. BLOB-страница, заполненная до этого процента, будет использоваться только для расширения уже содержащихся в ней BLOB-данных, новые BLOB-данные размещаться в эту страницу не будут. По умолчанию процент заполнения страницы BLOB равен 50%.
Пример
CREATE TABLE "TABLE1" ( … ) maxrowid 300000000 PCTFILL 90;
В данном примере будет размечено пространство под таблицу TABLE1 в размере достаточном для хранения 300 000 000 записей, также максимальный номер ROWID будет установлен в значение 300 000 000 и отношение среднего размера упакованной записи к среднему размеру неупакованной – 90%.
Более подробное описание можно найти в документации: