При выполнении приложения с двухэтапной фиксацией рекомендуется обратить внимание на следующее:
- Чем больше областей MPP работает, тем лучше. Транзакция в режиме двухэтапной фиксации занимает
область MPP в течение всего времени выполнения.
- Если в рамках
транзакции с двухэтапной фиксацией выполняется несколько транзакций
IMS,
то число доступных областей MPP должно быть не меньше числа транзакций, иначе приложение может
зависнуть.
- Для того чтобы транзакция не тратила слишком много времени
на ожидание ресурсов, настройте тайм-аут для каждого взаимодействия в рамках глобальной
транзакции.
- Избегайте выполнения большого количества взаимодействий с
базой данных в рамках одной транзакции с двухэтапной фиксацией. Если одна транзакция с двухэтапной
фиксацией содержит несколько транзакций
IMS,
то они могут привести к возникновению конфликта или взаимной блокировке, если попытаются обновить
одни и те же данные.
Во избежание этого следует написать приложение таким образом, чтобы пользователю запрещалось
обращаться к одним и тем же записям в рамках одной операции с двухэтапной фиксацией.
- Настройте в диспетчере блокировки IRLM или PI размер блока, совпадающий с размером наименьшей записи в базе данных.
При большом размере блока конфликты могут возникать при доступе к разным записям, расположенным
близко друг к другу на жестком диске.
- Если в одной транзакции IMS выполняется несколько взаимодействий, работающих с одной базой данных IMS в рамках глобальной транзакции (единицы работы), то для запуска каждого из таких взаимодействий в этой транзакции IMS требуется отдельная область MPP. Для транзакции IMS необходимо указать значения SCHDTYP=PARALLEL
и PARLIM=0, чтобы разрешить выполнение данной транзакции IMS в нескольких областях MPP и гарантировать соблюдение требований планирования
(ненулевое число сообщений) для обработки каждого взаимодействия в новой области MPP.
- Если тайм-аут выполнения не задан, то при зависании
области в ходе ожидания RRS-OTMA можно вручную остановить транзакцию в этой области. Для этого
воспользуйтесь командой
IMS
для остановки области, указав параметр аварийного завершения транзакции. Например,
/STOP REGION
номер-областиABDUMP
ИД-транзакции.
Это приведёт к откату транзакции для отдельного взаимодействия и освобождению области MPP.