Категории
Самые читаемые
PochitayKnigi » Компьютеры и Интернет » Программирование » Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Читать онлайн Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 188 189 190 191 192 193 194 195 196 ... 238
Перейти на страницу:

Вывод событий содержит такую же информацию истории, но в другом формате. На рис. 40.12 показана последовательность записей истории, выводимых в части событий отчета.

В Классическом сервере запись события, похожая на "активную", показанная на рисунке, может быть причиной для беспокойства. Она указывает, что один серверный процесс получил флаг (mutex) при доступе к ресурсу, записал свой идентификатор владельца в заголовочную группу блокировки, а затем был уничтожен, в то время как он все еще хранился в таблице блокировок. Однако вторая заголовочная группа блокировки должна иметь достаточно информации, чтобы позволить второму процессу отменить все действия, частично завершенные уничтоженным процессом.

Интерактивная выборка

Интерактивные временные ряды деятельности по блокировкам генерируются, когда fb_iock_print выполняется с переключателем -i для измерения производительности Менеджера блокировок. Это моделирует UNIX-утилиту sar (System Activity Reporter, построитель отчетов системной деятельности). Отчет, показанный на рис. 40.13, выбирает каждые 4 секунды десять интервалов. Выборка на рис. 40.13 была сгенерирована в Классическом сервере Firebird при выполнении четырех локальных процессов с большим количеством конфликтов:

fb_lock_print -ia 4 10

fb_iock_print -ia "запрашивает" статистику:

1. acquire/s: среднее количество попыток в секунду обращений к таблице блокировок.

2. acqwait/s: среднее количество попыток, которым пришлось ожидать, в каждую секунду.

Рис. 40.13. Интерактивная выборка

3. %acqwait: процент попыток, которые были вынуждены ожидать.

4. acqrtry/s: среднее количество повторных обращений к таблице блокировок в секунду (в теории только для машин SMP).

5. rtrysuc/s: среднее количество успешных повторных попыток в секунду.

! ! !

СОВЕТ. В качестве подсказки, что означают столбцы в различных интерактивных отчетах, прочтите статью "Reading a Lock Print" Ann Harrison на http://www.ibphoenix.com.

. ! .

Установка конфигурации блокировки

Значения по умолчанию Менеджера блокировок должны подойти для большинства вычислительных сред. При работе, особенно в Классическом сервере, имеет смысл подрегулировать эти установки для улучшения производительности или для устранения дефицита ресурсов блокировки.

Файлы конфигурации

Файлы конфигурации размещены в корневом каталоге Firebird. Для сервера Firebird 1.5 и более поздних файл конфигурации называется firebird.conf. Для версии 1.0.x он называется ibconfig в Windows и-isc config в POSIX. Используйте текстовый редактор для открытия и редактирования этого файла.

LockAcquireSpins

Версия 1.5 и выше, файл firebird.conf.

lock_acquire_spins

Версии, предшествующие Firebird 1.5, файл iscconfig/ibconfig.

Эта установка используется только для машин SMP при выполнении Классического сервера.

В Классическом сервере в любой момент времени к таблице блокировок может иметь доступ только один клиентский процесс. Флаг управляет доступом к таблице блокировок. Клиентские процессы могут обращаться к флагу условно или безусловно. Если запрос условный, то он будет ошибочным и должен быть повторен. Если запрос безусловный, то он будет ожидать, пока не будет удовлетворен. LockAcquirespins устанавливает количество возможных попыток, если запрос к флагу условный.

Требуется целое число. Значение по умолчанию 0 (безусловный). Не существует рекомендованного минимума или максимума.

LockHashSlots

Версия 1.5 и выше, файл firebird.conf.

lock_hash_slots

Версии, предшествующие Firebird 1.5, файл iscconfig/ibconfig.

Используйте этот параметр для настройки списка хэша блокировок. При повышенной нагрузке производительность может быть улучшена увеличением области памяти под хэш для распределения списка на более короткие цепи хэша. Значением является целое число. Рекомендуется использовать простое число. Значение по умолчанию 101.

Этот параметр и LockMemSize (см. следующий раздел) должны вычисляться одновременно с использованием инструмента Lock Print. Если цепи хэш блокировок более чем в среднем 20, значит объем памяти под хэш слишком мал. Если вам надо увеличить память под хэш, вам нужно увеличить размер таблицы блокировок на тот же процент.

LockMemSize

Версия 1.5 и выше, файл firebird.conf.

any_lock_mem_size

Версии, предшествующие Firebird 1.5, файл isc_config/ibconfig.

Этот целочисленный параметр представляет количество байтов для совместно используемой памяти для таблицы Менеджера блокировок. Для Классического сервера LockMemSize задает начальное распределение, которое будет динамически увеличиваться, пока не будет исчерпана память. ("Lock manager is out of room", "Исчерпана память для Менеджера блокировок" не означает, что можно отправляться пить кофе!) Значение этого параметра связано с размером кэша базы данных, поскольку каждая страница потребует отдельной блокировки в таблице. Если количество страниц базы данных в кэше установлено в большое значение, это может привести к проблемам памяти для таблицы блокировок.

В Суперсервере объем памяти, выделенный для Менеджера блокировок, не увеличивается.

Размером по умолчанию в Linux и в Solaris является 98 304 байта (96 Кбайт). В Windows это 262 144 (256 Кбайт).

LockGrantOrder

Версия 1.5 и выше, файл firebird.conf.

lock_grant_ order

Версии, предшествующие Firebird 1.5, файл isc config/ibconfig.

Когда соединению требуется блокировка некоторого объекта, оно получает группу запроса блокировки, которая определяет объект и требуемый уровень блокировки. Группы запросов соединяются с группами блокировок в виде удовлетворенных запросов или в виде запросов, ожидающих разрешения.

Параметр LockGrantOrder является Логическим. Значение по умолчанию (1 = True) указывает, что блокировки должны предоставляться по принципу "первым пришел - первым обслужен".

Установка False (0) эмулирует поведение InterBase 3.3, когда блокировка предоставляется, как только она станет возможной. Результатом этого может оказаться то, что запросы будут "замороженными". Рассматривайте это как запрещенную установку и не пытайтесь ее использовать, если только это не требуется для тестирования некоторой модификации сервера базы данных.

LockSemCount

Версия 1.5 и выше, файл firebird.conf.

any_lock_sem_count

Версии, предшествующие Firebird 1.5, файл isc_config/ibconfig.

Это целочисленный параметр, задающий количество доступных семафоров для межпроцессной коммуникации (Inter-Process Communication, IPC) Классического сервера. Значение по умолчанию 32. Устанавливайте этот параметр для Классического сервера для увеличения или уменьшения количества доступных семафоров.

ПРИЛОЖЕНИЯ

Приложение 1. Список внешних функций

Функции условной логики

FBUDF

INULLIF(VALUE1, VALUE2)

Linux, Win32

Возвращает NULL для подвыражения, если оно преобразуется в непустое значение; иначе возвращает значение подвыражения. Применимо только для числовых типов с фиксированной точкой и только в Firebird 1.0.x. В Firebird 1.5 и выше используйте внутреннюю функцию NULLIF()

Аргументы

VALUE1: столбец или вычисляемое выражение

VALUE2: константа или выражение, с которым сравнивается VALUE1. ЕСЛИ они равны, функция вернет HULL

Возвращаемое значение

NULL, если VALUE1 и VALUE равны; если равенства нет, будет возвращено VALUE 1

Замечания

INULLIFO имеет результат, эквивалентный использованию внутренней SQL-функции NULLIFO, реализованной в Firebird 1.5 и выше для числовых типов с фиксированной точкой

Внешняя функция INULLIFO существует в трех реализациях: две для 32-битовых и 16-битовых типов (inullif и dnullif), а третья для 64- битовых типов (i64nullif). Если вы хотите использовать ее с любыми числовыми типами с фиксированной точкой, объявите все реализации. Объявления можно найти в скрипте fbudf.sql в каталоге /UDF вашей инсталляции Firebird.

Не объявляйте реализацию i64nullif для баз данных, которые не поддерживают 64-битовые числа- например, для не перенесенной базы данных InterBase 5

Пример

Следующий оператор приведет к тому, что значение STOCK в таблице PRODUCTS будет установлено в NULL для всех строк, где оно имеет значение 0:

UPDATE PRODUCTS

SET STOCK = iNULLIF(STOCK, 0)

Связанные или похожие функции

См. также NULLIF() , sNullIf()

FBUDF

INVL(VALUE1, VALUE2)

Linux, Win32

Эта функция пытается повторить функцию Oracle NVL() только для числовых типов с фиксированной точкой. Она возвращает указанное непустое значение, если заданный столбец имеет значение NULL

Аргументы

VALUE1: столбец или выражение, включающее столбец. Типы с плавающей точкой не поддерживаются. При необходимости используйте в вашем выражении CAST() для преобразования значения в числовой тип.

1 ... 188 189 190 191 192 193 194 195 196 ... 238
Перейти на страницу:
Тут вы можете бесплатно читать книгу Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри.
Комментарии