Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Шрифт:
UDF. Сокращение для User Defined Function (определенные пользователем функции). В InterBase имеется небольшое количество встроенных функций, которые определяются стандартом SQL. Для расширения функциональности разработчик может писать функции, вызываемые InterBase-сервером таким образом, что они могут использоваться как встроенные. Библиотека FreeUDFLib служит демонстрацией возможностей UDF, также предоставляя набор очень полезных и часто требующихся функций.
Unique key (уникальный ключ). Значение, которое идентифицирует каждую мнись u\upic/M в ыблице и оыичас! ее oi осыльныч записей Сдедившедьио, юлько одно значение уникальною ключа
Y-Valve. Внутри InterBase имеет несколько "серверов", и когда происходит подсоединение, то InterBase должен решить, какой из серверов использовать для конкретной базы данных. Алгоритм для определения нужного сервера называется Y-valve (по определению Стива Тентона (Steve Tendon)). Помимо прочего Y- Valve должен определить, использовать ли прямой доступ к базе данных (локальная база данных) или подсоединиться к удаленному InterBase-серверу (в InterBase Classic-архитектуры) и какую версию использовать для чтения данной ODS (в случае, когда один и тот же InterBase-сервер может читать разные версии ODS).
GUID (Global Unique Identifier)– глобальный уникальный идентификатор. Под GUID обычно понимается 128-битовое уникапьное значение, которое получается с помощью механизма генерации GUID на основе текущей даты и времени, а также системных номеров процессора и материнской платы. Механизм GUID позволяет получить огромное количество уникальных идентификаторов. Поломч GUID можем быть использован для уникальной идентификации различных объектов (например, СОМ-серверов).
Параметры конфигурационного файла InterBase
LOCK_MEM_SIZE
Параметры в ibconfig
V4_LOCK_MEM_SIZE 98304
ANY_LOCK_MEM_SIZE 98304
Действие
LOCK_MEM_SIZE определяет количество памяти, выделяемый для таблицы блокировок. В случае сервера с архитектурой Classic, указываемый размер используется для начального выделения памяти, а затем таблица блокировок может расширяться во время работы, пока не займет всю свободную память. В случае SuperServer устанавливаемый размер невозможно изменить без перезапуска сервера. По умолчанию размер памяти, выделяемой для блокировочной таблицы, равен 98304 байтам.
Объяснение
Во всех версиях 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