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.
- 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.
Performance
- 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.
- 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
- 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:
- Abra el archivo server.xml.
- Cambie el valor de -Dcom.ibm.ws.pm.grouppartialupdate=true por -Dcom.ibm.ws.pm.grouppartialupdate=false.