Intento de acceso: Niveles de aislamiento y bloqueos de actualización
Las políticas de intento de acceso de WebSphere Application Server proporcionan un modo coherente de definir el nivel de aislamiento de los datos de bean CMP en las distintas bases de datos relacionales del entorno.
Dentro de una aplicación desplegada, la combinación de una definición de simultaneidad y el tipo de acceso de una política de intento de acceso significa el valor del nivel de aislamiento que el servidor de aplicaciones establece en una conexión de base de datos. Para obtener más información acerca de la simultaneidad y el tipo de acceso, consulte los artículos Control de simultaneidad e Intento de acceso y aislamiento. Esta combinación de propiedades también significa el distintivo de bloqueo de actualización que el servidor de aplicaciones pasa a la base de datos a través de la sentencia preparada JDBC.
Las bases de datos no proporcionan tantas definiciones de niveles de aislamiento como WebSphere Application Server. Las bases de datos definen un nivel de aislamiento como uno de sólo tres tipos. Asimismo, sólo un parámetro indica el tipo de nivel de aislamiento que las bases de datos establecen en las conexiones de entrada. Cada uno de los tipos puede representarse mediante un valor de parámetro distinto, según lo determine cada proveedor de bases de datos. Por ejemplo, una base de datos puede definir un nivel de aislamiento como RR (Lectura repetible de JDBC), mientras que una base de datos distinta puede definir el mismo nivel de aislamiento que RC (Lectura comprometida de JDBC).
Debido a esta incoherencia, WebSphere Application Server no correlaciona las políticas de intento de acceso con los valores de parámetros. En su lugar, el servidor de aplicaciones correlaciona las políticas de intento de acceso con los tipos de nivel de aislamiento que son comunes en todos los proveedores de bases de datos.
Perfil de intento de acceso | Nivel de aislamiento | Implementación del bloqueo de actualización | |||||
---|---|---|---|---|---|---|---|
DB2 | Oracle* | SyBase | Informix | Apache Derby | SQL Server | ||
wsPessimisticUpdate- Weakest LockAtLoad (política predeterminada) | RR | RC | RR | RR | RR | RR | No (*Oracle, Sí) |
wsPessimisticUpdate | RR | RC | RR | RR | RR | RR | Sí |
wsPessimisticRead | RR | RC | RR | RR | RR | RR | No |
wsOptimisticUpdate | RC | RC | RC | RC | RC | RC | No |
wsOptimisticRead | RC | RC | RC | RC | RC | RC | No |
wsPessimisticUpdate sin colisiones | RC | RC | RC | RC | RC | RC | No |
wsPessimisticUpdate- Exclusivo | S | S | S | S | S | S | Sí |
- RC = Lectura comprometida de JDBC
- RR = Lectura repetible de JDBC
- RS = Serializable de JDBC
- * Oracle no da soporte a la Lectura repetible (RR) de JDBC. Por lo tanto, wsPessimisticUpdate-weakestLockAtLoad y wsPessimisticUpdate se comportan de la misma forma en Oracle que wsPessismisticRead y wsOptimisticRead. Debido a la restricción de Oracle, la clase de JDBC OracleXADataSource no se puede ejecutar con un nivel de aislamiento de transacción S. Por lo tanto, no podrá utilizar esta clase para ejecutar una aplicación que contenga enterprise beans con las políticas de intento de acceso configuradas para que el bean se cargue con el aislamiento S.
- En la versión 6.0, se pone en desuso el soporte del establecimiento de políticas de intento de acceso por método EJB. Se recomienda establecer el intento de acceso sólo para el bean completo.
- Comprometido para lectura con instantáneas
- Instantánea de transacción (para Serializable)
Palabras clave y restricciones de SQL (Lenguaje de consulta estructurada)
Base de datos | sintaxis SQL utilizada para bloquear la actualización | unir restricciones | ordenar por restricciones | subseleccionar restricciones | restricciones de agregación |
---|---|---|---|---|---|
DB2 | FOR UPDATE OF | no permitido | no permitido | no permitido | no permitido |
DB2 UDB para iSeries (V5R3 y anteriores) | FOR UPDATE OF | no permitido | permitido con limitaciones* | permitido con limitaciones* | no permitido |
DB2 UDB para iSeries (V5R4 y posteriores) | WITH RS/RR USE AND KEEP EXCLUSIVE LOCKS | no permitido | permitido con limitaciones* | permitido con limitaciones* | no permitido |
DB2 en z/OS V8.x | WITH RS/RR USE AND KEEP UPDATE LOCKS | ninguno | ninguno | ninguno | ninguno |
Estación de trabajo DB2 UDB V8.2 | WITH RS/RR USE AND KEEP UPDATE LOCKS | ninguno | ninguno | ninguno | ninguno |
Oracle | FOR UPDATE | ninguno | ninguno | ninguno | ninguno |
Apache Derby | FOR UPDATE OF | no permitido | no permitido | no permitido | no permitido |
Informix | FOR UPDATE | no permitido | no permitido | no permitido | no permitido |
Sybase | FOR UPDATE | no permitido | no permitido | no permitido | no permitido |
Sqlserver | UPDLOCK | no permitido | no permitido | no permitido | no permitido |