Расчет размера файла сортировки
При построении ключей, индексов или при выполнении команды 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 страниц.