Расчет размера файла сортировки

При построении ключей, индексов или при выполнении команды REBUILD TABLE… СУБД ЛИНТЕР использует файл сортировки.

Примечание

При создании индекса и модификации таблицы с использованием опции BY APPEND не требуется дополнительной дисковой памяти под файл сортировки, но сортировка данных будет выполняться несколько медленнее.

Далее приведен порядок расчета размера файла сортировки в страницах по известным параметрам таблицы.

Пусть:

N – общее число столбцов в индексе/ключе;

V – из них число столбцов типов переменной длины (VARCHAR, VARBYTE и т.д.);

S – суммарная максимальная длина всех столбцов в байтах;

Тогда каждая запись сортировки для индекса/ключа занимает (7 + N*3 + V*2 + S). Кроме собственно значений столбцов туда еще входят ROWID, длины значений, NULL-флаги, мандатный доступ и т.д.

Исходя из размера одной записи сортировки, можно посчитать, сколько их поместится в одну страницу, и, соответственно, сколько страниц файла сортировки достаточно будет для создания индекса.

По умолчанию лимит файла сортировки равен 524287 страниц (т.е. файл длиной 4 GB). Но gendb сейчас разрешает поставить и больший лимит.

Пример

create table test_tabl(col_vc(100), col_vc2(100), col_vc3(100));
(7 + 3*3 + 3*2 + 300) = 322 байт
В таблице 60 000 000 записей, следовательно,
общий требуемый размер файла сортировки будет
(322*60 000 000) : 4 000 (байт в странице) = 4 830 000 страниц.