Параметры инициализации DB2
К параметрам DB2, которые может потребоваться изменить для работы с базой геоданных ArcSDE, относятся:
Параметры, влияющие на блокировку
Блокировки могут быть не общими, в зависимости от клиентского приложения и настройки базы данных. Помните, что проблема со временем может усугубляться. К счастью, DB2 имеет параметры настройки, контролирующие размер списка блокировки (LOCKLIST), максимальный процент блокировок на приложение (MAXLOCKS), время ожидания получения блокировки (LOCKTIMEOUT), частота определения блокировки (DLCHKTIME) и поведение при отмене блокировки (DB2LOCK_TO_RB).
По умолчанию для LOCKLIST и MAXLOCKS в DB2 9 используется значение AUTOMATIC, т.е. эти параметры самонастраивающиеся. Это позволяет диспетчеру памяти DB2 динамически распределять память между потребителями. Автоматическая настройка происходит только в том случае, если в базе данных включена автонастройка памяти (SELF_TUNING_MEM=ON).
Чтобы просмотреть настройки списка блокировки, введите следующую команду:
db2 get db cfg
Max storage for lock list (4KB) (LOCKLIST) = 50
Interval for checking deadlock (ms) (DLCHKTIME) = 10000
Percent. of lock lists per application (MAXLOCKS) = 22
Lock time out (sec) (LOCKTIMEOUT) = -1
Max number of active applications (MAXAPPLS) = AUTOMATIC
Для значения реестра DB2LOCK_TO_RB используйте db2set и найдите DB2LOCK_TO_RB=.
-
LOCKLIST и MAXLOCKS
Чтобы увеличить емкость списка блокировки и задать верхнюю границу, измените параметры LOCKLIST и MAXLOCKS, соответственно. Чтобы задать LOCKLIST для DB2 8:
- Оцените максимальное количество активных приложений (MAXAPPLS, если задано).
- Оцените среднее число блокировок на одно приложение.
- Оцените минимальный и максимальный размер списка блокировок:
(Avg # locks per application * 36 * MAXAPPLS) / 4096 (Avg # locks per application * 72 * MAXAPPLS) / 4096
где 72 = # байт первой блокировки объекта 36 = # байт дополнительных блокировок объекта
- Задайте значение LOCKLIST между нижним и верхним пределами.
Например:
db2 update db cfg using LOCKLIST 200
- Определите процент списка блокировки, который может потребоваться приложению, прежде чем начнется увеличение лимита блокировок. Это может быть фиксированный процент или основанный на объемах обычных транзакций.
Например, если приложениям разрешено использовать вдвое больше среднего числа блокировок:
100 * (Avg # locks per application * 2 * 72 bytes per lock) / (LOCKLIST * 4096 bytes)
Тогда, задайте MAXLOCKS как показано ниже:db2 update db cfg using MAXLOCKS 22
- Дополнительная настройка параметров списка блокировок включает использование мониторов снимков и событий. Изучите следующую информацию на уровне базы данных:
- Общий объем памяти, использующейся для списка блокировок
- Число произошедших увеличений блокировок
- Используйте монитор событий для определения максимального количества блокировок в транзакции.
-
LOCKTIMEOUT
Чтобы задать время ожидания получения блокировки в DB2, измените LOCKTIMEOUT.
-
DLCHKTIME
Чтобы настроить интервал проверки блокировки, настройте DLCHKTIME.
-
DB2LOCK_TO_RB
DB2LOCK_TO_RB определяет поведение транзакции, когда время ожидания блокировки превышает значение в LOCKTIMEOUT. По умолчанию блокировка по времени ожидания возвращает запрос транзакции. Чтобы изменить это поведение и возвращать только выражение, запрашивающее блокировки, измените DB2LOCK_TO_RB, задав для db2set DB2LOCK_TO_RB=STATEMENT. Однако для ArcSDE хорошо подходит и значение по умолчанию.
Дополнительную информацию о настройке этих параметров см. в разделе Блокировки в базе данных DB2.
См. документацию к DB2 и руководства по повышению производительности, чтобы получить более подробную информацию о правильной настройке этих параметров.