Tentative d'accès -- Niveaux d'isolement et verrous de mise à jour
Les règles de tentative d'accès WebSphere Application Server sont une méthode cohérente de définition du niveau d'isolement des données de bean CMP dans les différentes bases de données relationnelles de votre environnement.
Dans une application déployée, la combinaison des règles de tentative d'accès concurrency definition et access type indique la valeur de niveau d'isolement définie par WebSphere Application Server pour la connexion à la base de données. Voir les articles, Contrôle des accès concurrents et Tentative d'accès et isolement des accès pour plus d'informations sur la concurrence et le type d'accès. Cette combinaison de propriétés représente également l'indicateur de verrouillage de mise à jour que le serveur d'applications transmet à la base de données par le biais d'une instruction JDBC préparée.
Les bases de données ne fournissent pas autant de définitions de niveau d'isolement que WebSphere Application Server. Les bases de données définissent un niveau d'isolement comme l'un des trois seuls types. En outre, seul un paramètre indique le type de niveau d'isolement que les bases de données définissent sur les connexions entrantes. Chacun des trois types peut être représenté par une valeur de paramètre différente, déterminée par chaque fournisseur de base de données. Par exemple, une base de données peut définir un niveau d'isolement en RR (JDBC Repeatable read), alors qu'une autre base de données peut définir le même niveau d'isolement en RC (JDBC Read committed).
En raison de cette différence, WebSphere Application Server ne fait pas correspondre les règles de tentative d'accès aux valeurs des paramètres. Le serveur d'applications fait au contraire correspondre les règles de tentative d'accès aux types de niveau d'isolement qui sont communs pour tous les fournisseurs de base de données.
Profil de tentative d'accès | Niveau d'isolement | Implémentation du verrou de mise à jour | |||||
---|---|---|---|---|---|---|---|
DB2 | Oracle* | SyBase | Informix | Apache Derby | SQL Server | ||
wsPessimisticUpdate- Weakest LockAtLoad (règle par défaut) | RR | RC | RR | RR | RR | RR | Non (*Oracle, oui) |
wsPessimisticUpdate | RR | RC | RR | RR | RR | RR | Yes |
wsPessimisticRead | RR | RC | RR | RR | RR | RR | Non |
wsOptimisticUpdate | RC | RC | RC | RC | RC | RC | Non |
wsOptimisticRead | RC | RC | RC | RC | RC | RC | Non |
wsPessimisticUpdate No-Collisions | RC | RC | RC | RC | RC | RC | Non |
wsPessimisticUpdate- Exclusive | S | S | S | S | S | S | Yes |
- RC = JDBC Read Committed
- RR = JDBC Repeatable Read
- S = Sérialisable JDBC
- * Oracle ne prend pas en charge JDBC Repeatable Read (RR). Par conséquent, wsPessimisticUpdate-weakestLockAtLoad et wsPessimisticUpdate ont, sous Oracle, le même comportement que wsPessismisticRead et wsOptimisticRead. En raison d'une restriction Oracle, la classe JDBC OracleXADataSource ne peut pas fonctionner avec un niveau d'isolement de transaction S. Par conséquent, vous ne pouvez pas utiliser cette classe pour exécuter une application contenant des beans enterprise dont les règles de tentative d'accès prévoient le chargement du bean avec le niveau d'isolement S.
- Dans la version 6.0, il est déconseillé de définir la prise en charge des règles de tentative d'accès par méthode EJB. Il est recommandé de ne définir les tentatives d'accès que pour l'ensemble du bean.
- Read Committed with Snapshots
- Transaction Snapshot (pour Serializable)
Mots de passe et restrictions SQL (Structured Query Language)
Base de données | syntaxe SQL utilisée pour verrouiller la mise à jour | restrictions de jonction (join) | restriction de tri (order by) | restrictions de sous-sélection (subselect) | restrictions de regroupement (aggregation) |
---|---|---|---|---|---|
DB2 | FOR UPDATE OF | non autorisé | non autorisé | non autorisé | non autorisé |
DB2 UDB for iSeries (versions 5.3 et antérieures) | FOR UPDATE OF | non autorisé | autorisé avec des limites* | autorisé avec des limites* | non autorisé |
DB2 UDB for iSeries (versions 5.4 et ultérieures) | AVEC UTILISATION DE RS/RR ET MAINTIEN DES VERROUILLAGES EXCLUSIFS | non autorisé | autorisé avec des limites* | autorisé avec des limites* | non autorisé |
DB2 sur z/OS 8.x | WITH RS/RR USE AND KEEP UPDATE LOCKS | none | none | none | none |
Poste de travail DB2 UDB 8.2 | WITH RS/RR USE AND KEEP UPDATE LOCKS | none | none | none | none |
Oracle | FOR UPDATE | none | none | none | none |
Apache Derby | FOR UPDATE OF | non autorisé | non autorisé | non autorisé | non autorisé |
Informix | FOR UPDATE | non autorisé | non autorisé | non autorisé | non autorisé |
Sybase | FOR UPDATE | non autorisé | non autorisé | non autorisé | non autorisé |
Sqlserver | UPDLOCK | non autorisé | non autorisé | non autorisé | non autorisé |