Diretrizes de codificação para evitar conflitos
Para contornar o problema de conflito, é recomendando que você classifique as informações a serem acessadas em uma determinada ordem antes de capturar os bloqueios.
Conflito se refere a uma condição específica em um banco de dados, quando dois processos estão aguardando que o outro processo libere um recurso. Por exemplo, quando um aplicativo cliente mantém um bloqueio em uma tabela e tenta obter o bloqueio em uma segunda tabela que é mantida por outro aplicativo cliente, isso pode levar a um conflito se o outro aplicativo tentar obter o bloqueio que é mantido pelo primeiro aplicativo.
Informações de classificação para uma ordem específica é aplicável a situações nas quais é necessário capturar vários bloqueios de itens de inventário dentro de um único limite de transação. Porém, não é necessário classificar se você chamar as APIs para processar itens únicos por confirmação de transação.
Lendo dados não confirmados no DB2® Banco de dados
No Db2, ao selecionar um registro de uma tabela, um bloqueio de leitura é obtido no registro. Se o registro selecionado for atualizado, mas não confirmado, o encadeamento aguarda até que ele confirme as mudanças. Como alternativa, você pode ler o registro com Leitura Não Confirmada (UR), caso em que o valor mais recente que foi atualizado é fornecido ao usuário.
É possível ler dados não confirmados de qualquer API da lista ativando o atributo ReadUncommitted para Y em seu XML de entrada. Para conseguir isso, você deve customizar o JSP individual e passar o atributo ReadUncommitted como um atributo oculto. Por exemplo,:
<input type="hidden" name="xml:/Order/@ReadUnCommitted" value="Y"/>
Como resultado, o cenário de bloqueio é contornado no banco de dados Db2 . O bloqueio é o padrão no DB2
Não é obrigatório passar esse sinalizador. Porém, se você configurar esse sinalizador para Y, o sistema será forçado a ler dados não confirmados. Por exemplo, uma transação, T1, atualiza a Tabela TAB-1, mas os dados da transação não são confirmados. Se o sinalizador ReadUncommitted for configurado para Y, outras transações podem ler os dados não confirmados na Tabela TAB-1.
Antes de configurar esse sinalizador, avalie as transações simultâneas para determinar se uma situação existe na qual um conflito esteja ocorrendo. Se nenhuma situação desse tipo ocorrer, o sinalizador deverá permanecer em sua configuração padrão