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