Спецификация параметров таблицы
Спецификация
См. спецификацию пункта «Создание таблицы».
Синтаксические правила
-
Значение параметра MAXROWID – целое положительное число, не превосходящее 2^30-1. Значение по умолчанию равно 1022.
-
Значение параметра MAXROW – больше нуля и не должно превышать значение MAXROWID. По умолчанию равно MAXROWID.
-
Значение параметров PCTFILL, PCTFREE – целое положительное число, не превышающее 100. По умолчанию значение PCTFILL равно 100.
Примечание
Для таблиц с размером записи более 4К значения параметров PCTFILL, PCTFREE игнорируются, так как широкие записи хранятся в BLOB-файлах. Поэтому указанные при создании таблицы значения параметров PCTFREE и PCTFILL фактически не применяются, а применяется значение параметра BLOBPCT.
-
Значение параметра BLOBPCT – целое положительное число, не превышающее 100. По умолчанию равно 50.
-
< Количество файлов >
таблицы любого вида не может быть больше 63. -
< Имя устройства >
–< символьный литерал >
длиной не более четырех символов. -
Максимальный
< размер файла >
данных/индексов/BLOB составляет 64 Гбайт. -
Если
< файловый параметр >
не задан и в таблице отсутствуют BLOB-столбцы, то по умолчанию СУБД определит два файла минимальных размеров: файл данных и индексный файл и разместит их в каталоге БД.
Общие правила
-
Параметр MAXROWID задает планируемое максимальное количество записей в создаваемой таблице. При создании таблицы будет зарезервировано на диске столько страниц конвертера данных таблицы, чтобы их хватило для размещения информации о MAXROWID записей, т.е. параметр MAXROWID влияет только на количество страниц конвертера.
-
Параметр MAXROW задает число записей, для хранения которых будет зарезервировано место на диске сразу же при создании таблицы. При создании таблицы будет создан первоначальный файл данных для одновременного хранения в нем MAXROW записей (размер рассчитывается исходя из декларируемого размера записей).
-
Хранящиеся записи могут не занимать все ROWID, т.к. обычно MAXROWID задается «с запасом». Это делается в связи с тем, что ROWID удаленных записей начинают переиспользоваться только после того, как исчерпан соответствующий «запас». Подобное переиспользование приводит к некоторому замедлению процесса добавления записей в таблицу. С параметром MAXROW связаны и другие параметры таблицы: размеры файлов (в зависимости от MAXROW СУБД вычисляет значения этих размеров по умолчанию).
-
Если при добавлении записи значения параметров MAXROW и MAXROWID превышены, таблица будет автоматически расширяться, что приведет к замедлению работы СУБД ЛИНТЕР.
CREATE TABLE auto (personID int not NULL, make char(20) default '', model char(20)) maxrowid 4096 maxrow 1000 pctfill 70;
-
Параметр PCTFREE задаёт порог, по которому СУБД определяет, что страница файла данных свободна для добавления в неё данных: а именно, страница файла считается свободной, если в ней есть не менее PCTFREE процентов свободного места (см. документ «Архитектура СУБД», подраздел «Файлы данных»). В случае, если этот параметр равен 0 (не установлен), считается, что порог, задаваемый параметром PCTFREE, совпадает с порогом, задаваемым параметром PCTFILL). Значение по умолчанию параметра PCTFREE – 0 (не установлен). Значение параметра PCTFREE зависит от значения PCTFILL (см. алгоритм вычисления PCTFREE от значения PCTFILL в документе «Рекомендации по настройке СУБД ЛИНТЕР», подраздел «Предварительная разметка дискового пространства для таблицы») >.
-
Параметр 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. Числовые и остальные типы данных не упаковываются.
-
Значение параметра 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;
-
Для таблиц с максимальным декларируемым размером записи, близким к 4 Кбайт, использовать значение PCTFILL по умолчанию категорически не рекомендуется, иначе размер файлов данных увеличится на несколько порядков при том же объеме данных.
CREATE TABLE BIG(C CHAR(4000)); INSERT INTO BIG SELECT CAST NULL AS CHAR FROM BIG1; … (всего 130000 записей) Размер файла данных таблицы BIG получается равным 130 Мбайтам – по 4 записи на страницу, хотя все записи пустые.
-
Параметр BLOBPCT задает процент заполнения BLOB-страниц создаваемой таблицы. BLOB-страница, заполненная до этого процента, будет использоваться только для расширения уже содержащихся в ней BLOB-данных, новые BLOB-данные размещаться в эту страницу не будут.
-
Опции INDEXFILES, DATAFILES, BLOBFILES задают количество, расположение и размер зарезервированных для таблицы файлов соответствующего типа.
-
Файлы таблицы могут быть размещены только на устройствах, < RAL >-уровень которых не ниже < RAL >-уровня таблицы.
-
< Имя устройства >
в< описателе файла >
указывает переменную операционной системы (среды окружения), содержащую спецификацию каталога, в котором будет создаваться файл таблицы или логическое имя устройства из таблицы $$$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);
-
-
Допускается создавать не более 63 файлов данных/индексов/BLOB каждого типа.
-
По умолчанию максимальная длина записи таблицы не более 4 Кбайт. Для установки другого максимального размера записи необходимо выполнить команду ALTER DATABASE SET RECORD SIZE LIMIT.