Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Шрифт:
Объяснение
Во всех версиях InterBase, исключая те, которые исполняются под управлением ОС VMS, конфликты распределения ресурсов разрешаются с помощью таблицы блокировок, которую ведет InterBase (только при употребление VMS InterBase пользуется его менеджером блокировок). В архитектуре Classic таблица блокировок находится в совместно используемой всеми серверными процессами памяти. В архитектуре SuperServer таблица блокировок является частью самого серверного процесса.
Хотя InterBase не употребление блокировки для разрешения конфликтов на уровне записей, он все же использует блокирование для того, чтобы защитить страницу базы данных в момент ее изменения. Под "моментом изменения"
Показания к изменению параметра
Изменение размера таблицы блокировок может повлиять:
* на размер кеша страниц базы данных. Каждая страница, помещаемая в кеш, блокируется по крайней мере один раз, а страницы, которые читаются несколькими клиентами, могут блокироваться несколько раз (этот пункт относится только к архитектуре Classic).
* на число одновременных транзакций. Каждая транзакция имеет блокировку, которая ее идентифицирует. Блокировка используется для синхронизации транзакций, а также для того, чтобы распознать случаи, когда транзакция завершилась без подтверждения (commit) или отката (rollback).
* на события. Механизм оповещения о событиях основывается на блокировках. Число событий и число клиентов, ожидающих эти события, влияют на размер таблицы блокировок.
SEMAPHORE COUNT
Параметры в ibconfig
V4_LOCK_SEM_COUNT 32
ANY_LOCK_SEM_COUNT 32
Действие
В системах, не поддерживающих многопоточную обработку, этот параметр устанавливает число семафоров, доступных InterBase. Количество семафоров по умолчанию зависит от ОС и описывается в следующей таблице:
Операционная система | Количество семафоров по умолчанию |
EPSON SEMAPHORES | 10 |
М88К SEMAPHORES | 10 |
UNIXWARE SEMAPHORES | 10 |
NCR3000 SEMAPHORES | 25 |
SCO_UN1X SEMAPHORES | 25 |
sgi SEMAPHORES | 25 |
IMP SEMAPHORES | 25 |
DELTA SEMAPHORES | 25 |
Ultrix SEMAPHORES | 25 |
DGUX SEMAPHORES | 25 |
DECOSF SEMAPHORES | 16 |
Other UNIX | 32 |
Объяснение
Семафоры используются для блокировок и сообщений о событиях. Теоретически InterBase должен использовать очень маленькое количество семафоров - 32 должно
быть более чем достаточно.Показания к изменению параметра
Если в файле протокола InterBase InterBase.log вы видите сообщение об ошибке "semaphores are exhausted", то следует увеличить количество семафоров.
LOCK SIGNAL
Параметры в ibconfig
V4_LOCK_SIGNAL 16
ANY_LOCK_SIGNAL 16
Действие
Параметр изменяет номер сигнала, используемый для обозначения конфликтов блокировок.
Объяснение
В архитектуре Classic, когда один серверный процесс блокирует страницу базы данных или другой ресурс, который необходим второму процессу, второй процесс сигнализирует об этом первому. Чтобы сменить номер сигнала, используется данный параметр. Значение номера сигнала по умолчанию зависит от ОС:
NETWARE_386 BLOCKING_SIGNAL 101
WINDOWS_ONLY BLOCKING_SIGNAL 101
All Others BLOCKING_SIGNAL SIGUSR1
Показания к изменению параметра
Сигналы имеют тенденцию "зашумляться", потому что несколько разных служб ОС могут использовать один и тот же сигнал. InterBase спроектирован для работы с "зашумленными" сигналами. Когда он получает сигнал, то пересылает его другим процессам-обработчикам, которые обрабатывают этот сигнал, причем с InterBase ничего не случится, если он получит сигнал и не сумеет его обработать, т. е. InterBase устойчив к "случайным" сигналам-шумам.
Может случиться так, что другой процесс в операционной системе использует тот же сигнал, что и InterBase. Тогда в случае, если этот процесс не сможет передать сигнал или аварийно завершиться при виде сигнала, который он не может обработать, то вы увидите, что либо InterBase-соединение "зависло", либо ошибки возникнут в другом процессе. В этом случае можно использовать параметр LOCK SIGNAL, чтобы выбрать другой сигнал.
Для систем с ОС Windows нет никакой необходимости изменять этот параметр.
EVENT MEMORY SIZE
Параметры в ibconfig
V4_EVENT_MEM_S1ZE 32768
ANY_EVENT_MEM_SIZE 32768
Действие
Параметр устанавливает начальный размер памяти, выделенной для таблицы событий (events).
Объяснение
Таблица событий (event table) хранится в отображенной (mapped) памяти. В архитектуре Classic место под эту таблицу выделяется Для каждого клиентского соединения. В архитектуре SuperServer одна таблица совместно используется всеми клиентами.
Показания к изменению параметра
Таблица увеличивается динамически, поэтому вроде бы нет причины для того, чтобы устанавливать этот параметр.
DATABASE CACHE SIZE
Параметры в ibconfig
DATABASE_CACHE_PAGES 75
Действие
Этот параметр устанавливает число страниц из любой базы данных, которое может одновременно находиться в кеше. Если вы увеличиваете это значение. InterBase поместит больше страниц из каждой базы данных в кеш. По умолчанию SuperServer помещает в кеш 2048 страниц из каждой базы данных, a Classic - 75 страниц на каждое клиентское соединение. На 16-битовых версиях \Vindo\vs по умолчанию размер кеша 50 страниц.