Спецификация параметров таблицы
Спецификация
См. спецификацию пункта «Создание таблицы».
Синтаксические правила
-
Значение параметра
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.