Когда размер внутреннего буфера сортировки слишком мал для размещения строк, включенных в операцию сортировки, для Firebird требуется создание временных файлов для сортировки в файловой системе сервера. По умолчанию он будет отыскивать путь, заданный в переменной окружения INTERBASE_TMP. Если эта переменная не указана, он постарается использовать путь /tmp в файловой системе Linux/UNIX или C:\Temp в Windows NT/2000/XP. Ни одно из этих размещений не может конфигурироваться для задания размера.
В Firebird существует параметр для определения дискового пространства, которое будет использовано для хранения таких временных файлов. Будет разумным его применять, чтобы гарантировать, что достаточное пространство для сортировки будет доступным при любых условиях.
Все запросы CONNECT или CREATE DATABASE совместно используют один и тот же список каталогов для временных файлов, и каждый запрос создает свои собственные временные файлы. Файлы сортировки освобождаются при завершении сортировки или при отмене запроса.
В версии 1.5 имя этого параметра изменилось с tmp_directory на TempDirectories. Также поменялся и синтаксис значения параметра.
Версия 1.5 и более поздние.
Предоставляет список из одного или более каталогов, разделенных точкой с запятой (;), где могут сохраняться файлы сортировки. Каждый элемент может включать необязательный аргумент размера в байтах для ограничения хранения. Если этот аргумент опущен или задан неверно, Firebird будет использовать пространство в этом каталоге, пока не исчерпает его объем, а после чего перейдет к следующему каталогу в списке, например:
POSIX: /db/sortfilesl 100000000;/firebird/sortfiles2
Windows: E:\sortfiles 500000000
Относительные пути трактуются относительно пути, который запущенный сервер распознает как корневой каталог инсталляции Firebird. Например, в Windows, если корневым каталогом является C:\Program Files\Firebird, то следующее значение сообщит серверу, что он должен сохранять временные файлы в C:\Program Files\Firebird\userdata\sortfiles с ограничением размера примерно в 477 Мбайт:
TempDirectories = userdata\sortfiles 500000000
Версии до Firebird 1.5.
Синтаксис старого значения для tmp directory требует включения одной строки tmp_directory для каждого каталога, в котором вы хотите сохранять временные файлы сортировки. Задавайте количество байтов, доступных в каждом каталоге, и в кавычках путь к каталогу, который существует на физическом накопителе с достаточным объемом свободной памяти. Вы можете перечислить множество записей, по одной на строке; пространства не обязательно должны быть смежными или размещаться на одном устройстве хранения данных.
Пример. Следующие записи задают список в одном файле конфигурации:
tmp_directory 6000000 "d:\fbtemp"
tmp_directory 12000000 "f:\fbtemp"
tmp_directory 4000000 "w:\backwash"
Путь должен быть заключен в двойные кавычки, иначе сервер проигнорирует эту запись. Пространство будет использовано в соответствии с порядком задания. Если будет выбрано пространство в одном конкретном каталоге, Firebird создаст новый временный файл в следующем каталоге из списка каталогов. Если же больше нет записей в списке каталогов, Firebird выдаст сообщение об ошибке и остановит обработку текущего запроса.
Параметры, связанные с ресурсами
Версии 1.5 и выше под Windows.
Версии до Firebird 1.5 под Windows.
В Суперсервере Firebird под Windows могут быть проблемы с операционной системой, постоянно переключающей процесс Суперсервера туда и сюда между процессорами на машинах SMP. В списках поддержки это называется "эффектом качелей" и на таких системах он может оказывать сильное воздействие на производительность. Данный параметр должен быть использован для установки одного или более конкретных процессоров для Суперсервера Firebird.
Параметры CpuAffinityMask и cpu?affinity получают значение целого числа: маску CPU. Например:
CpuAffinityMask = 1
cpu_affinity = 1
Суперсервер запускается только на первом процессоре (CPU 0).
CpuAffinityMask = 2
cpu_affinity = 2
Запускается только на втором процессоре (CPU 1).
CpuAffinityMask = 3
cpu_af finity = 3
Запускается на первом и на втором процессорах.
! ! !
ВНИМАНИЕ! Этот параметр не работает в Windows 9х или ME, поскольку он использует вызов NT API. Версии Windows 9х не могут использовать более одного процессора.
. ! .
Вы можете использовать этот параметр для установления свойства Firebird для любого одного процессора или (для Классического сервера) любой комбинации процессоров, установленных в системе.
Рассматривайте центральные процессоры как массив, пронумерованный от 0 до n-1, где n- количество установленных процессоров, i - номер в массиве конкретного процессора. M- другой массив, содержащий значение маски (Maskvaiue) для каждого выбранного CPU. Значение А является суммой значений в массиве M.
Используйте следующие формулы для получения Ми вычисления Maskvaiue А:
Mi = 2l
А = М1+М2 + M3 ...