Предварительная разметка дискового пространства для таблицы

Для ускорения вставки в таблицу большого количества данных и повышения эффективности работы при изменении данных необходимо разметить пространство заранее (при создании таблицы) при помощи параметров 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%.

Более подробное описание можно найти в документации: