Параметры для конфигурирования временного пространства для сортировки
Параметры для конфигурирования временного пространства для сортировки
Когда размер внутреннего буфера сортировки слишком мал для размещения строк, включенных в операцию сортировки, для Firebird требуется создание временных файлов для сортировки в файловой системе сервера. По умолчанию он будет отыскивать путь, заданный в переменной окружения INTERBASE_TMP. Если эта переменная не указана, он постарается использовать путь /tmp в файловой системе Linux/UNIX или C:Temp в Windows NT/2000/XP. Ни одно из этих размещений не может конфигурироваться для задания размера.
В Firebird существует параметр для определения дискового пространства, которое будет использовано для хранения таких временных файлов. Будет разумным его применять, чтобы гарантировать, что достаточное пространство для сортировки будет доступным при любых условиях.
Все запросы CONNECT или CREATE DATABASE совместно используют один и тот же список каталогов для временных файлов, и каждый запрос создает свои собственные временные файлы. Файлы сортировки освобождаются при завершении сортировки или при отмене запроса.
В версии 1.5 имя этого параметра изменилось с tmp_directory на TempDirectories. Также поменялся и синтаксис значения параметра.
TempDirectories
Версия 1.5 и более поздние.
Предоставляет список из одного или более каталогов, разделенных точкой с запятой (;), где могут сохраняться файлы сортировки. Каждый элемент может включать необязательный аргумент размера в байтах для ограничения хранения. Если этот аргумент опущен или задан неверно, Firebird будет использовать пространство в этом каталоге, пока не исчерпает его объем, а после чего перейдет к следующему каталогу в списке, например:
POSIX: /db/sortfilesl 100000000;/firebird/sortfiles2
Windows: E:sortfiles 500000000
Относительные пути трактуются относительно пути, который запущенный сервер распознает как корневой каталог инсталляции Firebird. Например, в Windows, если корневым каталогом является C:Program FilesFirebird, то следующее значение сообщит серверу, что он должен сохранять временные файлы в C:Program FilesFirebirduserdatasortfiles с ограничением размера примерно в 477 Мбайт:
TempDirectories = userdatasortfiles 500000000
tmp_directory
Версии до Firebird 1.5.
Синтаксис старого значения для tmp directory требует включения одной строки tmp_directory для каждого каталога, в котором вы хотите сохранять временные файлы сортировки. Задавайте количество байтов, доступных в каждом каталоге, и в кавычках путь к каталогу, который существует на физическом накопителе с достаточным объемом свободной памяти. Вы можете перечислить множество записей, по одной на строке; пространства не обязательно должны быть смежными или размещаться на одном устройстве хранения данных.
Пример. Следующие записи задают список в одном файле конфигурации:
tmp_directory 6000000 "d:fbtemp"
tmp_directory 12000000 "f:fbtemp"
tmp_directory 4000000 "w:ackwash"
Путь должен быть заключен в двойные кавычки, иначе сервер проигнорирует эту запись. Пространство будет использовано в соответствии с порядком задания. Если будет выбрано пространство в одном конкретном каталоге, Firebird создаст новый временный файл в следующем каталоге из списка каталогов. Если же больше нет записей в списке каталогов, Firebird выдаст сообщение об ошибке и остановит обработку текущего запроса.