Recherche…


Remarques

J'ai trouvé ce lien - il est utile comme référence: "Niveaux d'isolement"

Exemples de définition du niveau d'isolement

Exemple de définition du niveau d'isolement:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM Products WHERE ProductId=1;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; --return to the default one
  1. READ UNCOMMITTED - signifie qu'une requête dans la transaction en cours ne peut pas accéder aux données modifiées d'une autre transaction qui n'est pas encore validée - pas de lecture incorrecte! MAIS, des lectures et des lectures fantômes non reproductibles sont possibles, car les données peuvent toujours être modifiées par d'autres transactions.

  2. REPEATABLE READ - signifie qu'une requête dans la transaction en cours ne peut pas accéder aux données modifiées d'une autre transaction qui n'est pas encore REPEATABLE READ - pas de REPEATABLE READ ! Aucune autre transaction ne peut modifier les données lues par la transaction en cours tant qu'elle n'est pas terminée, ce qui élimine les lectures NON REPEATABLE. MAIS, si une autre transaction insère NEW ROWS et que la requête est exécutée plus d'une fois, les lignes fantômes peuvent apparaître à partir de la seconde lecture (si elle correspond à l'instruction where de la requête).

  3. SNAPSHOT - ne peut renvoyer que des données qui existent au début de la requête. Assure la cohérence des données. Il empêche les lectures sales, les lectures non répétables et les lectures fantômes. Pour l'utiliser, la configuration de la base de données est requise:

ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
  1. READ COMMITTED - isolation par défaut du serveur SQL. Cela empêche la lecture des données modifiées par une autre transaction jusqu'à leur validation. Il utilise le verrouillage partagé et le contrôle de version des lignes sur les tables, ce qui évite les lectures anormales. Cela dépend de la configuration de la base de données READ_COMMITTED_SNAPSHOT - si elle est activée - le contrôle de version des lignes est utilisé. pour activer - utilisez ceci:
ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; --return to the default one
  1. SERIALIZABLE - utilise des verrous physiques acquis et conservés jusqu'à la fin de la transaction, ce qui empêche les lectures incorrectes, les lectures fantômes, les lectures non reproductibles. MAIS, cela a un impact sur les performances de la base de données, car les transactions simultanées sont sérialisées et exécutées une par une.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ;


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow