Recurso de Atualização de Coluna Parcial para Persistência Gerenciada por Contêiner

O método ejbStore do bean Container Managed Persistence (CMP) armazenava todos os atributos persistentes do bean CMP para o banco de dados, mesmo que apenas um subconjunto dos campos de atributo persistente fossem alterados. Essa degradação desnecessária do desempenho foi eliminada neste release do produto.

Nota: Os beans de entidade não são suportados nos módulos EJB 3.0.
Para beans de entidade CMP do Enterprise JavaBeans (EJB) 2.x, é possível usar o recurso de atualização parcial para especificar como deseja atualizar os atributos persistentes do bean CMP para o banco de dados. Esse recurso é fornecido como uma opção de persistência no nível do bean, chamada de PartialOperation, na política de intenção de acesso configurada para o bean. PartialOperation tem dois valores possíveis:
NENHUM
A atualização está desativada. Todos os atributos persistentes do bean CMP são armazenados no banco de dados. Esse é o valor padrão.
UPDATE_ONLY
Especifica que as atualizações do banco de dados ocorrem apenas para os atributos persistentes do bean CMP que são alterados.
Para obter informações sobre como configurar uma atualização parcial, consulte Configurando a Atualização Parcial para Beans Persistentes Gerenciados por Contêiner.

Desempenho

A execução de atualizações parciais aumenta o desempenho de várias maneiras:
  • reduzindo o tempo de execução de consulta, já que apenas um subconjunto das colunas está na consulta. A melhoria é aumentada para tabelas com muitas colunas e índices. Quando a tabela possui muitos índices, apenas os índices afetados pelas colunas atualizadas precisam ser atualizadas pelo banco de dados de backend.
  • reduzindo a entrada e saída de rede visto haver menos dados a serem transmitidos.
  • economizando o tempo de processamento de colunas mapeadas de modo não trivial. Por exemplo, se uma coluna usar conversores, compositores e transformações para introduzir parcialmente o registro de entrada.
  • eliminando disparos desnecessários de acionadores de atualização. Se um campo de bean CMP não for alterado, qualquer disparo que dependa apenas da coluna correspondente não é acionado.
Embora a atualização parcial melhore o desempenho, ela pode afetar o desempenho de forma adversa conforme a seguir:
  • Se você ativar a atualização parcial de um bean que seu aplicativo modifica diversas combinações de colunas diferentes durante o mesmo período de tempo, a capacidade máxima do cache de instruções preparadas para a conexão será atingida rapidamente. Como resultado, os identificadores de instrução são removidos do cache com base no uso menos recente. Isso resulta em instruções sendo preparadas repetidamente, redução no desempenho de todas as funções CMP, não apenas limitado ao método ejbStore.
  • Os gabaritos de consulta de atualização parcial armazenados em cache no conjunto de funções aumentam o uso da memória. O aumento é linear em relação ao número de campos no bean CMP para o qual a opção de intenção de acesso de atualização parcial está ativada.
  • A opção persistente PartialOperation, quando utilizada em combinação com a opção persistente de Atualização em Lotes, afeta o desempenho da atualização em lotes porque cada consulta parcial é diferente. Há um custo do tempo de execução que decorre para a geração dinâmica de uma cadeia de consulta de atualização parcial. Como os fragmentos de consulta estão armazenados para cada coluna, o custo de execução para montar os fragmentos de consulta é linear, com base no número de campos de bean CMP sujos.
  • Há verificações de condição para cada campo CMP, por exemplo, para inspecionar os sinalizadores sem importância e executar as chamadas de método preparedStatement setXXX.

Considerações para Usar a Atualização Parcial

Os ganhos de desempenho que você espera obter devem ser comparados às possíveis instâncias onde pode ocorrer degradação. É possível usar as orientações a seguir para ajudá-lo a tomar a decisão.
  • A atualização parcial poderá não beneficiar um aplicativo que envolve apenas uma pequena tabela com poucas colunas e tipos de dados simples e nenhum acionador de atualização. O custo da montagem da consulta parcial excede dinamicamente o ganho em desempenho.
  • A atualização parcial é um benefício se houver um tipo de dados complexo que não é atualizado frequentemente. Um exemplo de tipo de dados complexos é um bean de funcionário com um atributo CMP “photo” mapeado para um BLOB OR VARGRAPHIC, ou um tipo de backend complexo semelhante, que normalmente é armazenado em um local diferente na implementação do gerenciador de banco de dados.
  • A atualização parcial poderá ser vantajosa, se houver várias colunas do tipo VARCHAR e apenas poucas delas forem atualizadas.
  • É melhor não usar a operação parcial se o aplicativo puder estar atualizando aleatoriamente combinações diferentes de colunas e o número de colunas designável (não chave) for maior que cinco. Isso gera diferentes consultas parciais e enche rapidamente o cache de instruções preparadas. Mas, se o bean não tiver muitas colunas, por exemplo, quatro ou menos, e tiver tipos de dados complexos, você poderá considerar a ativação da atualização parcial, com a opção de aumentar o tamanho do cache de instruções para garantir um número maior de consultas. Para obter informações sobre como aumentar o tamanho do cache de instruções, consulte a ajuda das configurações de origem de dados.
  • A Atualização Parcial é benéfica quando há acionadores de atualização necessários em um subconjunto de colunas.
  • A atualização Parcial é benéfica quando a tabela tem várias colunas e índices, e apenas alguns índices são atingidos por uma atualização típica.

Restrições

Por padrão, a atualização de lote de consultas de atualização é desativada para todos os beans CMP para os quais a atualização parcial está ativada. Ou seja, a atualização parcial tem prioridade em relação à atualização em batch. A atualização em batch de consultas de exclusão e de inserção não é afetada.

O desempenho da atualização em batch é afetado quando as opções de persistência de atualização em batch e de atualização parcial são utilizadas no mesmo bean, pois cada consulta parcial é diferente. É possível usar a propriedade JVM, -Dcom.ibm.ws.pm.grouppartialupdate=true, para agrupar as consultas de atualização parcial semelhantes em uma atualização em lotes. O agrupamento de atualizações parciais só ajuda quando há diversas consultas parciais com a mesma forma em uma transação. Caso contrário, o agrupamento de atualizações parciais tem o efeito oposto no desempenho. Como essa definição não é baseada no nível do bean, você deve tomar cuidado ao ativá-la. Como isso afeta todos os beans nos quais as atualizações parciais e em lotes estão ativadas, certifique-se de que a atualização em lotes das consultas parciais de fato aumente o desempenho quando visto entre todos os beans nos quais ambas as atualizações estão ativadas.

Para configurar a propriedade JVM:

  1. Abra o arquivo server.xml.
  2. Altere o valor de -Dcom.ibm.ws.pm.grouppartialupdate=true para -Dcom.ibm.ws.pm.grouppartialupdate=false.

Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_partupd
Nome do arquivo: cejb_partupd.html