Шрифт:
* для версии 1.5 уберите комментарий у DefaultDbCachePages и измените число;
* для версии 1.0.x в файле конфигурации это defauit_cache_pages. Если необходимо, уберите комментарий В строке и создайте запись default_cache_pages=nnnn, где nnnn - новый размер кэша.
Для Суперсервера новое значение вступит в силу в следующий раз при первом соединении с базами данных. Для Классического сервера оно будет действовать для всех соединений, выполненных после реконфигурации.
Не переоценивайте важность кэша базы данных. Любой кэш устанавливает собственные накладные расходы на общие ресурсы памяти, а кэш файловой системы играет свою роль в оптимизации выполнения системного ввода/вывода. Всегда есть точка, где реальный выигрыш в общей производительности сервера не оправдывает стоимости использования ресурсов для худшего варианта запроса.
Хороший совет: не бросайтесь оптимизировать размер кэша для Firebird по принципу "обязан сделать". В процессе разработки используйте установки по умолчанию, а при установке системы просто проверьте, подходит ли объем доступной памяти RAM значениям по умолчанию.
Один раз используйте инструмент мониторинга для наблюдения и фиксации, сколько происходит чтений и записей из кэша для типичных и экстремальных ситуаций. Если статистика вас не устраивает, начинайте оптимизацию.
При первом приближении к оптимизации вы можете увеличить значение по умолчанию для кэша до размера, который займет приблизительно две трети доступной свободной памяти RAM. Если установлен недостаточный объем RAM, поставьте больше.
После этого снова запустите мониторинг. Если описанная процедура не привела к улучшению дел, повторите упражнение.
Проверка размера кэша
Для проверки величины используемого кэша базы данных выполните следующие команды в isql:
ISQL> CONNECT имя-базы-данных;
ISQL> SET STATS ON;
ISQL> COMMIT;
Current memory = 415768
Delta memory = 2048
Max memory = 419840
Elapsed time = 0.03 sec
Buffers = 2048
Reads = 0
Writes 2
Fetches = 2
ISQL> QUIT;
После SET STATS ON пустая команда COMMIT указывает утилите isql на необходимость отображения информации об использовании памяти и буфера. Прочтите значение Buffers для определения текущего размера кэша в страницах.
Базы данных только для чтения
Базы данных по умолчанию создаются в режиме чтения/записи. Базы данных для чтения/записи не могут находиться на файловых системах только для чтения, даже если они используют только операторы SELECT, потому что Firebird записывает информацию о состоянии транзакций в структуру данных в файл базы данных.
–
База данных Firebird может поставляться как файл только для чтения, при размещении каталогов, файлов и других, не относящихся к базе данных объектов, на ком- пакт-диски или другие файловые системы только для чтения. Конечно, к базам данных только для чтения могут также обращаться системы чтения/записи.
! ! !
ПРИМЕЧАНИЕ. База данных только для чтения - это не то же самое, что файл базы данных, у которого установлен атрибут только для чтения. Копирование файла базы данных для чтения/записи на компакт-диск не сделают ее базой данных только для чтения.
. ! .
Может потребоваться разработка приложения, которое не использует запросы, включающие запись в базу данных, или приложения, вызывающего исключение при попытках записи в базу данных. Следующие действия вызовут ошибку "Attempt to write to a read-only database" (Попытка записи в базу данных только для чтения):
* операции UPDATE, INSERT или DELETE;
* изменения метаданных;
* операции, которые пытаются увеличить генераторы.
Внешние файлы
Любые файлы, связанные с базой данных путем объявления
CREATE TABLE имя-таблицы EXTERNAL FILE 'имя-файла'
будут так же открываться, как файлы только для чтения, даже если для файла не установлен атрибут только для чтения.
Преобразование базы данных в режим только для чтения
Требуется исключительный доступ для переключения базы данных между режимами чтения/записи и только для чтения- см. разд. "Исключительный доступ" главы 39. Переключение режима может быть выполнено владельцем базы данных или пользователем SYSDBA.
Могут быть использованы утилиты gfix или gbak [37] :
* Используя gbak, выполните резервное копирование базы данных и восстановите ее в режиме только для чтения посредством опции -c[reate], например:
gbak -create -mode read_only dbl.fbk dbl.fdb
37
Сервис API предоставляет доступ к обоим методам для перевода базы данных в режим только для чтения. Чтобы получить информацию, изучите доступную документацию по различным группам параметров действий сервиса (isc_action_svc_xxx), которые могут передаваться в функцию isc_service_start О . Множество компонентов доступа к базе данных реализуют эти функции для использования в различных языковых средах.