Упаковка пользовательских данных

СУБД ЛИНТЕР хранит записи таблиц в файлах данных таблиц в упакованном виде, т.е. все правосторонние концевые пробелы символьных данных и двоичные нули байтовых данных усекаются. При поиске свободных страниц файла данных в процессе добавления новой записи СУБД проверяет наличие в ней свободного места не для всей декларированной записи, а для её упакованной версии.

Определять, что страница файла данных свободна для добавления в неё новой записи, можно по двум критериям: количеству свободных байтов в ней (например, 459) или по проценту свободного места в ней (например, 20%). СУБД ЛИНТЕР использует второй критерий. Если свободного места на странице меньше, чем указанный владельцем создаваемой таблицы размер упакованных записей этой таблицы (параметр PCTFILL в SQL-операторе создания таблицы, т.е. меньше, чем на одну упакованную запись), то СУБД помечает страницу как занятую и запрещает добавление в неё новых записей до тех пор, пока свободного места на странице не станет больше, чем задано параметром PCTFREE (значение параметра задается владельцем создаваемой таблицы в SQL-операторе создания таблицы и указывает, при каком проценте неиспользуемого в странице места она считается свободной). Значение параметра PCTFREE зависит от средней длины упакованной записи.

Пример вычисления параметров PCTFILL и PCTFREE см. в документе «СУБД ЛИНТЕР. Рекомендации по настройке СУБД ЛИНТЕР».