Спецификация параметров таблицы
Спецификация
См. спецификацию пункта «Создание таблицы».
Синтаксические правила
-
Значение параметра 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 задают количество, расположение и размер зарезервированных для таблицы файлов соответствующего типа.
-
Файлы таблицы могут быть размещены только на устройствах,
-уровень которых не ниже -уровня таблицы. -
<Имя устройства>
в<описателе файла>
указывает переменную операционной системы (среды окружения), содержащую спецификацию каталога, в котором будет создаваться файл таблицы или логическое имя устройства из таблицы $$$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.