Estratégias de bloqueio e configurações de isolamento de transação afetam o desempenho dos seus aplicativos.
Para obter mais informações, consulte Gerenciador de Bloqueio:
Utilize a estratégia de bloqueio pessimista para operações de leitura e gravação de mapas em que, normalmente, ocorrem conflitos de chaves. A estratégia de bloqueio pessimista tem o maior impacto no desempenho.
Isolamento de Transação de Leitura Committed e Uncommitted
Ao usar a estratégia de bloqueio pessimista, consulte o nível de isolamento de transação usando o método Session.setTransactionIsolation. Para o isolamento de leitura confirmada e de leitura não-confirmada, use os argumentos Session.TRANSACTION_READ_COMMITTED ou Session.TRANSACTION_READ_UNCOMMITTED dependendo do isolamento. Para reconfigurar o nível de isolamento de transação para o comportamento de bloqueio pessimista padrão, use o método Session.setTransactionIsolation com o argumento Session.REPEATABLE_READ.
O isolamento de leitura committed reduz a duração dos bloqueios compartilhados, o que pode melhorar a simultaneidade e reduzir a chance de conflitos. Este nível de isolamento deve ser utilizado quando uma transação não precisa de garantias de que os valores de leitura permanecerão inalterados ao longo da duração da transação.
Utilize uma leitura não-confirmada quando a transação não precisa visualizar os dados confirmados.
O bloqueio otimista é a configuração padrão. Tal estratégia melhora o desempenho e a escabilidade quando comparada com a estratégia pessimista. Utilize-a quando seus aplicativos tolerarem algumas falhas de atualização otimista e o desempenho ainda mostrar-se melhor do que com a estratégia pessimista. Essa estratégia é excelente para operações de leitura e aplicativos cuja atualização não ocorre com frequência.
Plug-in OptimisticCallback
A estratégia de bloqueio optimistic faz uma cópia das entradas de cache e as compara, conforme necessário. Esta operação pode ser custosa porque a cópia da entrada pode envolver clonagem ou serialização. Para implementar o desempenho mais rápido possível, implemente o plug-in customizado para os mapas de não entidade.
Consulte Plug-ins para Versão e Comparação de Objetos de Cache para obter informações adicionais.
Utilize Campos de Versão para Entidades
Quando você está utilizando o bloqueio optimistic com entidades, utilize a anotação @Version ou o atributo equivalente no arquivo descritor dos metadados da Entidade. A anotação da versão fornece ao ObjectGrid uma maneira muito eficiente de controlar a versão de um objeto. Se a entidade não possui um campo de versão e bloqueio optimistic é utilizado para a entidade, então, a entidade inteira deve ser copiada e comparada.
Não utilize nenhuma estratégia de bloqueio para aplicativos de somente leitura. A estratégia de bloqueio none não obtém nenhum bloqueio nem utilizar um gerenciador de bloqueios. Portanto, essa estratégia oferece maior simultaneidade, desempenho e escalabilidade.