Función de actualización parcial de columnas para la persistencia gestionada por contenedor

El método de bean CMP (persistencia gestionada por contenedor) ejbStore almacenaba todos los atributos persistentes del bean CMP en la base de datos, aunque sólo se hubiera cambiado un subconjunto de campos de atributos persistentes. Esta reducción innecesaria del rendimiento se ha eliminado en este release del producto.

Nota: No se da soporte a los beans de entidad en los módulos EJB 3.0.
Para los beans de entidad CMP EJB (Enterprise JavaBeans) 2.x, puede utilizar la característica actualización parcial para especificar cómo desea que se actualicen los atributos persistentes del bean CMP en la base de datos. Esta característica se proporciona como una opción de persistencia a nivel de bean, denominada PartialOperation, en la política de intento de acceso configurada para el bean. PartialOperation tiene dos valores posibles:
NINGUNO
La actualización parcial está desactivada. Todos los atributos persistentes del bean CMP se almacenan en la base de datos. Es el valor predeterminado.
UPDATE_ONLY
Especifica que las actualizaciones de la base de datos sólo se producen para los atributos persistentes del bean CMP que se han modificado.
Para obtener información sobre cómo establecer la actualización parcial, consulte Configuración de la actualización parcial para los beans persistentes gestionados por contenedor.

Performance

La realización de actualizaciones parciales aumenta el rendimiento de varias formas:
  • reduce el tiempo de ejecución de las consultas, ya que sólo hay un subconjunto de las columnas en la consulta. La mejora es mayor en las tablas con muchas columnas e índices. Cuando la tabla tiene muchos índices, la base de datos de programa de fondo sólo tiene que actualizar los índices afectados por las columnas actualizadas.
  • reduce la entrada/salida de red, ya que hay que transmitir menos datos.
  • ahorra tiempo de proceso para las columnas correlacionadas de forma no trivial. Por ejemplo, si una columna utiliza conversores, herramientas de creación y transformaciones para introducir parcialmente el registro de entrada.
  • elimina la activación innecesaria de desencadenantes de actualización. Si no se modifica un campo de bean CMP, no se activará el desencadenante que dependa sólo de la columna correspondiente.
Aunque la actualización parcial aumenta el rendimiento, puede afectar negativamente al rendimiento.
  • Si habilita la actualización parcial en un bean para el que la aplicación modifica varias combinaciones diferentes de columnas durante el mismo período de tiempo, el máximo de memoria caché de sentencias preparadas de la conexión se alcanza rápidamente. Como resultado, los manejadores de sentencias se desalojan de la memoria caché según el uso menos reciente. Esto hace que las sentencias se preparen una y otra vez, lo que disminuye el rendimiento de todas las funciones CMP ,no está sólo limitado al método ejbStore.
  • Las plantillas de consultas de actualizaciones parciales colocadas en memoria caché en el conjunto de funciones aumentan el uso de la memoria. El aumento el directamente proporcional al número de campos en el bean CMP para el que se activa la opción de intento de acceso de actualización parcial.
  • La opción persistente PartialOperation, cuando se utiliza en combinación con la opción persistente de actualización por lotes, afecta al rendimiento de la actualización por lotes, ya que cada consulta parcial es diferente. Se produce un coste de tiempo de ejecución para generar una serie de consulta de actualización parcial de forma dinámica. Como se almacenan fragmentos de consulta para cada columna, el coste de ejecución para ensamblar los fragmentos de columna es lineal, según el número de campos de bean CMP sucios.
  • Existen comprobaciones de condiciones para cada campo CMP, por ejemplo, para inspeccionar los distintivos sucios y para ejecutar las llamadas al método preparedStatement setXXX.

Consideraciones del uso de actualizaciones parciales

El aumento de rendimiento que espera alcanzar se debe contrastar con las instancias posibles en las que se pueda producir una degradación. Puede utilizar las siguientes directrices para tomar la decisión.
  • La actualización parcial puede que no sea ventajosa para una aplicación que sólo tenga una pequeña tabla con pocas columnas y tipos de datos simples y ningún desencadenante de actualización. El coste de ensamblar la consulta parcial de forma dinámica será mayor que el aumento del rendimiento.
  • La actualización parcial es ventajosa si hay un tipo de datos complejo que no se suele actualizar. Un ejemplo de tipo de datos complejo es un bean employee con un atributo CMP “photo” correlacionado con un BLOB O VARGRAPHIC, o un tipo de programa de fondo complejo parecido que se suele almacenar en una ubicación diferente en la implementación del gestor de base de datos.
  • La actualización parcial puede ser ventajosa si existen varias columnas de tipo VARCHAR y sólo se actualizan unas pocas.
  • Se recomienda no utilizar la operación parcial si la aplicación actualiza de forma aleatoria distintas combinaciones de columnas y el número de columnas asignables (no de clave) es mayor de cinco. Esto genera diferentes consultas parciales diferentes y rellena rápidamente la memoria caché de sentencias preparadas. Pero, si el bean no tiene tantas columnas, por ejemplo, cuatro o menos, y tiene tipos de datos complejos, puede considerar la activación de la actualización parcial, con la opción de aumentar el tamaño de la memoria caché para garantizar un número aumentado de consultas. Para obtener información sobre cómo aumentar el tamaño de la memoria caché de sentencias, consulte la ayuda de los valores del origen de datos.
  • La actualización parcial es ventajosa cuando se necesitan desencadenantes de actualización en un subconjunto de columnas.
  • La actualización parcial es ventajosa cuando la tabla tiene muchas columnas e índices, de los cuales una actualización típica sólo toca unos pocos.

Restricciones

De forma predeterminada, la actualización por lotes de consultas de actualización está inhabilitada para todos los beans CMP para los que está habilitada la actualización parcial. Es decir, la actualización parcial tiene prioridad frente a la actualización por lotes. La actualización por lotes de consultas de supresión e inserción no se ve afectada.

La actualización por lotes se ve afectada cuando se utilizan las opciones de persistencia de actualización parcial y actualización por lotes en el mismo bean, ya que cada consulta parcial es diferente. Puede utilizar la propiedad JVM, -Dcom.ibm.ws.pm.grouppartialupdate=true, para agrupar las consultas de actualización parcial parecidas en una actualización por lotes. La agrupación de actualizaciones parciales sólo sirve cuando hay varias consultas parciales con la misma forma en una transacción. De lo contrario, la agrupación de actualizaciones parciales tiene el efecto opuesto en el rendimiento. Como este valor no es a nivel de bean, tenga cuidado cuando lo active. Como este valor afecta a todos los beans que tengan activada la actualización parcial y la actualización por lotes, asegúrese de que la actualización por lotes de las consultas parciales aumente el rendimiento cuando se vea en todos los beans para los que se han activado ambas actualizaciones.

Para establecer la propiedad JVM:

  1. Abra el archivo server.xml.
  2. Cambie el valor de -Dcom.ibm.ws.pm.grouppartialupdate=true por -Dcom.ibm.ws.pm.grouppartialupdate=false.

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_partupd
File name: cejb_partupd.html