Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Шрифт:
Объяснение
Кеш содержит страницы, которые были прочитаны из базы данных, а также вновь созданные страницы. Назначение кеша - уменьшить число чтений- записей страниц в базе данных путем удержания их в ОЗУ. чтобы они были "под рукой", пока подтверждение транзакции (commit) или другое событие не вынудит их быть записанными. Чем больше кеш, тем больше страниц сохранеются в памяти.
Минимальное значение кеша - 50 страниц, и максимальное - 65535. Эмпирический опыт показывает, что значения кеша более 10000 уменьшают производительность. По информации компании Borland, проблема снижения производительности при кеше размером более 10000 буферов ликвидирована в InterBase 6.5.
Вы можете увеличить размер кеша на уровне базы данных (в SuperServer)
InterBase не увеличивает размера кеша динамически, потому что слишком большой кеш может быть таким же вредным, как и слишком маленький. Например, массовая вставка записей работает лучше при использовании маленького кеша, потому что страницы, которые наполняются данными, не посещаются вновь. Те приложения, которые применяют часто используемые справочные страницы, могут применять больший кеш для того, чтобы хранить эти таблицы в памяти.
Показания к изменению параметра
Если вам кажется, что ваш InterBase сервер-работает слишком медленно и число страниц в кеше менее 10000, то увеличение размера кеша может улучшить производительность.
SERVER PRIORITY CLASS
Параметры в ibconfig
SERVER_PRIORITY_CLASS 1
Действие
Устанавливает приоритет для SuperServer на Windows/NT/2000. Значение 2 этого параметра устанавливает высокий приоритет (HIGH_PRIORITY_CLASS) серверному процессу InterBase - ibserver.exe. Все остальные значения будут устанавливать серверному процессу InterBase значения нормального приоритета (NORMAL_PRIORITY_CLASS). По умолчанию параметр имеет значение 1.
Объяснение
Увеличивая приоритет процесса, вы можете заставить InterBase-сервер занимать больше процессорного времени. Если вас заботит производительность, вам лучше поставить сервер на выделенную однопроцессорную систему. Если вы рассчитываете на прирост производительности от клиентов, запущенных на одной машине, в том случае, когда они применяют совместную память, а не TCP, используйте многопроцессорную систему, привяжите сервер к одному процессору, а клиентов запускайте на другом.
Показания к изменению параметра
Я несколько предубеждена против этого параметра, но если хотите попробовать, то вперед.
SERVER CLIENT MAPPING
Параметры в ibconfig
SERVER_CLffiNT_MAPPING 4096
Действие
Этот параметр устанавливает размер области разделяемой памяти, которая используется в Windows-системах для того, чтобы устанавливать связь между сервером и клиентом, запущенным на той же машине (локальное соединение). Размер по умолчанию - 4 Кбайт.
Объяснение
На Windows-системах (и только Windows) клиент, запущенный на той же машине, что и сервер, может устанавливать соединение с сервером через область разделяемой памяти, а не через TCP/IP. Используйте этот параметр для управления размером этой области.
Память выделяется блоками по 1024 байта. Приемлемый диапазон значений лежит между 1-м и 16-м однокилобайтовым блоком, т. е. значение этого параметра может быть одним из следующих: 1024, 2048, 3072, 4096, 5120, 6144, 7165 8192.9216. 10240, 11264,12288, 13312, 14336, 15360 или 16384.
Показания к изменению параметра
Если у вас много памяти и локальных клиентов, то увеличение размеров области обмена (communications area) может улучшить производительность
SERVER WORKING SIZE
Параметры в ibconfig
SERVER_WORKING_SIZE_MIN 0
SERVER_WORKING_SIZE_MAX 0
Действие
Этот
параметр устанавливает ограничения размера рабочей физической памяти (working size), доступно SuperServer на платформе Windows/NT/2000. Параметр измеряется в однокилобайтовых блоках. По умолчанию оба параметра имеют значение 0, что означает "нет ограничений".Объяснение
Ограничивая максимальный размер рабочей памяти, можно заставить InterBase "упасть замертво" раньше времени из-за недостатка памяти. Увеличивая минимальный размер рабочей памяти, вы можете заставить InterBase "захватывать" память тогда, когда она ему не нужна.
Показания к изменению параметра
Установка минимального размера рабочей памяти может устранить некоторые затраты на постепенное разрастание памяти сервера, т. е. выделить столько памяти, чтобы серверу не пришлось больше ее увеличивать и тратить на это какие-тo усилия Установка максимального размера рабочей памяти может удержать сервер захватывания всей доступной памяти на системах с малым ее количеством. Не запускайте InterBase SuperServer на системах с малым количеством памяти.
LOCK GRANT ORDER
Параметры в ibconfig
V4_LOCK_GRANT_ORDER 1
Действие
Устанавливает состояние блокировки 1 - "Истина", включает сортировку блокировок; 0 - "Ложь", и выключает режим сортировки блокировок. По умолчанию сортировка блокировок выключена.
Объяснение
Сортировка блокировок достаточно проста, необходимо только узнать немного больше о блокировках. Когда соединение (клиент) запрашивает блокировку на объект, оно указывает в запросе определенный уровень блокировки. Типы блокировок приведены в следующей таблице:
Идентификатор типа блокировки | Английское наименование | Русский перевод наименования блокировки |
#define LCK_none 0 | Отсутствие блокировок | |
#define LCK_null 1 | Existence | Блокировка существования объекта |
#define LCK_SR 2 | Shared Read | Совместное чтение |
#define LCK_PR 3 | Protected Read | Защищенное Чтение |
#defme LCK_SW 4 | Shared Write | Совместная запись |
#define LCK_PW 5 | Protected Write | Защищенная запись |
#define LCK_EX 6 | Exclusive | Эксклюзивная блокировка |
Блокировка типа LCK_none на самом деле представляет собой запрос на снятие существующей блокировки. Блокировка LCK_null - это блокировка существования, которая налагается клиентским соединением. Для этого соединения важно лишь, чтобы заблокированный объект существовал.
Этот тип блокировки используется для того, чтобы гарантировать существование индексов, пока существуют скомпилированные запросы, которые зависят от этих индексов. Взаимодействие уровней блокировки описывается в следующей таблице совместимости блокировок (здесь 1 означает, что данные блокировки совместимы, 0 - несовместимы):