Спецификация параметров таблицы
Спецификация

См. спецификацию пункта «Создание таблицы».

Синтаксические правила
  1. Значение параметра MAXROWID – целое положительное число, не превосходящее 2^30-1. Значение по умолчанию равно 1022.

  2. Значение параметра MAXROW – больше нуля и не должно превышать значение MAXROWID. По умолчанию равно MAXROWID.

  3. Значение параметров PCTFILL, PCTFREE – целое положительное число, не превышающее 100. По умолчанию значение PCTFILL равно 100.

    Примечание

    Для таблиц с размером записи более 4К значения параметров PCTFILL, PCTFREE игнорируются, так как широкие записи хранятся в BLOB-файлах. Поэтому указанные при создании таблицы значения параметров PCTFREE и PCTFILL фактически не применяются, а применяется значение параметра BLOBPCT.

  4. Значение параметра BLOBPCT – целое положительное число, не превышающее 100. По умолчанию равно 50.

  5. < Количество файлов > таблицы любого вида не может быть больше 63.

  6. < Имя устройства >< символьный литерал > длиной не более четырех символов.

  7. Максимальный < размер файла > данных/индексов/BLOB составляет 64 Гбайт.

  8. Если < файловый параметр > не задан и в таблице отсутствуют BLOB-столбцы, то по умолчанию СУБД определит два файла минимальных размеров: файл данных и индексный файл и разместит их в каталоге БД.

Общие правила
  1. Параметр MAXROWID задает планируемое максимальное количество записей в создаваемой таблице. При создании таблицы будет зарезервировано на диске столько страниц конвертера данных таблицы, чтобы их хватило для размещения информации о MAXROWID записей, т.е. параметр MAXROWID влияет только на количество страниц конвертера.

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

  3. Хранящиеся записи могут не занимать все ROWID, т.к. обычно MAXROWID задается «с запасом». Это делается в связи с тем, что ROWID удаленных записей начинают переиспользоваться только после того, как исчерпан соответствующий «запас». Подобное переиспользование приводит к некоторому замедлению процесса добавления записей в таблицу. С параметром MAXROW связаны и другие параметры таблицы: размеры файлов (в зависимости от MAXROW СУБД вычисляет значения этих размеров по умолчанию).

  4. Если при добавлении записи значения параметров MAXROW и MAXROWID превышены, таблица будет автоматически расширяться, что приведет к замедлению работы СУБД ЛИНТЕР.

    CREATE TABLE auto
      (personID int not NULL,
       make char(20) default '',
       model char(20))
       maxrowid 4096
       maxrow 1000
       pctfill 70;
  5. Параметр PCTFREE задаёт порог, по которому СУБД определяет, что страница файла данных свободна для добавления в неё данных: а именно, страница файла считается свободной, если в ней есть не менее PCTFREE процентов свободного места (см. документ «СУБД ЛИНТЕР. Архитектура СУБД», подраздел «Файлы данных»). В случае, если этот параметр равен 0 (не установлен), считается, что порог, задаваемый параметром PCTFREE, совпадает с порогом, задаваемым параметром PCTFILL). Значение по умолчанию параметра PCTFREE – 0 (не установлен). Значение параметра PCTFREE зависит от значения PCTFILL (см. алгоритм вычисления PCTFREE от значения PCTFILL в документе «СУБД ЛИНТЕР. Рекомендации по настройке СУБД ЛИНТЕР», подраздел «Предварительная разметка дискового пространства для таблицы») >.

  6. Параметр PCTFILL определяет порог занятости для страниц файла данных. Если свободного места в странице недостаточно для размещения заданного PCTFILL процента упакованной записи, то страница считается занятой (закрытой) для добавления (см. документ «СУБД ЛИНТЕР. Архитектура СУБД», подраздел «Файлы данных»).

    Параметр вычисляется по формуле

    PCTFILL=L_Compress_Rec/L_Declare_Rec*100
      где:
      L_Compress_Rec – средняя длина упакованной записи;
      L_Declare_Rec – декларированная в конструкции CREATE TABLE длина записи.
      Упаковке (сжатию) подвергаются:
      – символьные данные (усекаются правосторонние концевые пробелы) в типах данных char, varchar, nchar, nvarchar и extfile;
      – байтовые данные (усекаются правосторонние концевые двоичные нули) в типах данных byte, varbyte.
    Числовые и остальные типы данных не упаковываются.
  7. Значение параметра PCTFILL может быть критичным, когда в таблице есть строковые поля большого размера, обычно заполняемые значительно более короткими значениями. Оптимальный процент сжатия в этом случае находится в пределах от 75% до 95% (PCTFILL от 5 до 25).

    CREATE TABLE auto
      (personID int not NULL,
      make char(20) default '',
      model char(20))
      maxrowid 4096
      maxrow 1000
      pctfill 70;
  8. Для таблиц с максимальным декларируемым размером записи, близким к 4 Кбайт, использовать значение PCTFILL по умолчанию категорически не рекомендуется, иначе размер файлов данных увеличится на несколько порядков при том же объеме данных.

    CREATE TABLE BIG(C CHAR(4000));
    INSERT INTO BIG SELECT CAST NULL AS CHAR FROM BIG1;
    …
    (всего 130000 записей)
    Размер файла данных таблицы BIG получается равным 130 Мбайтам – по 4 записи на страницу, хотя все записи пустые.
  9. Параметр BLOBPCT задает процент заполнения BLOB-страниц создаваемой таблицы. BLOB-страница, заполненная до этого процента, будет использоваться только для расширения уже содержащихся в ней BLOB-данных, новые BLOB-данные размещаться в эту страницу не будут.

  10. Опции INDEXFILES, DATAFILES, BLOBFILES задают количество, расположение и размер зарезервированных для таблицы файлов соответствующего типа.

  11. Файлы таблицы могут быть размещены только на устройствах, < RAL >-уровень которых не ниже < RAL >-уровня таблицы.

  12. < Имя устройства > в < описателе файла > указывает переменную операционной системы (среды окружения), содержащую спецификацию каталога, в котором будет создаваться файл таблицы или логическое имя устройства из таблицы $$$DEVICE (если таблица $$$DEVICE присутствует в БД). < Имя устройства > должно включать не более четырех символов. При размещении файла применяется следующий алгоритм:

    • если таблица $$$DEVICE имеется в БД, и значение < имя устройства > в ней найдено, файл создается в соответствии со спецификацией из этой таблицы;

    • если таблица $$$DEVICE отсутствует в БД, и пользователю разрешена работа с неописанными устройствами, то СУБД ЛИНТЕР будет рассматривать в качестве переменной среды окружения значение < имя устройства >;

    • если < имя устройства > не определено, фиксируется ошибка;

    • если < имя устройства > не задано в < определении таблицы >, то в качестве переменной среды окружения будет рассматриваться переменная SY00;

    • в случае, когда SY00 не определена, СУБД ЛИНТЕР будет создавать файл таблицы в текущем каталоге;

    • < размер файла > указывает число страниц (по 4096 байт) в файле. < Размер файла > должен быть не менее двух страниц. Если < размер файла > не задан, то система вычислит его, исходя из предыдущих параметров и установок по умолчанию.

    CREATE TABLE Integer_Table
      (Integer_Column integer not NULL)
      pctfill 50
      indexfiles 1(4)
      datafiles 1('DB' 2);
  13. Допускается создавать не более 63 файлов данных/индексов/BLOB каждого типа.

  14. По умолчанию максимальная длина записи таблицы не более 4 Кбайт. Для установки другого максимального размера записи необходимо выполнить команду ALTER DATABASE SET RECORD SIZE LIMIT.