Cet article comprend principalement le contenu suivant :
(1) La notion de transactions et d'ACID
(2) Niveau d'isolement des transactions
(3) Transactions dans MySQL
La compréhension des transactions est la base d'autres concepts avancés.
Comprenons les concepts d'ACID dans la base de données : atomicité, cohérence, isolation et durabilité.Transaction : une transaction est un ensemble de requêtes SQL atomiques , ou une unité d'exécution indépendante. Soit toutes réussissent, soit toutes échouent. Si elle échoue, renvoyez Roll au précédent <.>état de la transaction.
(1) Atomicité : Les opérations d'une transaction constituent une unité globale indivisible, soit toutes sont effectuées, soit aucune n'est effectuée.
-- 开始事务START TRANSACTION; -- 查询支票账户余额+ SELECT balance FROM checking WHERE customer_id = 10233276;+ -- 将支票账户减去200UPDATE checking SET balance = balance - 200.00 WHERE customer_id = 10233276; -- 将余额账户增加200UPDATE savings SET balance = balance + 200.00 WHERE customer_id = 10233276; -- 提交事务更新COMMIT;
Lecture non validée (lecture non validée)
À ce niveau d'isolement, toutes les transactions peuvent voir les résultats d'exécution d'autres transactions non validées. La lecture de données non validées est également appelée lecture sale. Ce niveau est rarement utilisé.Lecture validée
Il s'agit du niveau d'isolement par défaut pour la plupart des systèmes de bases de données (mais pas celui par défaut de MySQL). Cela répond à la définition simple de l'isolement : une transaction ne peut voir que les modifications apportées par les transactions validées. En d'autres termes, elle est invisible pour les autres transactions avant qu'elle ne soit validée. Ce niveau d'isolement prend également en charge la lecture non répétable, car d'autres instances de la même transaction peuvent avoir de nouvelles validations pendant le traitement de cette instance, de sorte que la même requête de sélection peut renvoyer des résultats différents.Lecture répétable (lecture répétable)
Il s'agit du niveau d'isolation des transactions par défaut de MySQL Il garantit que plusieurs instances de la même transaction peuvent. exécuter simultanément Lors de la lecture des données, vous verrez les mêmes lignes de données. Cependant, en théorie, cela entraînera un autre problème épineux : la lecture fantôme (Phantom Read). En termes simples, la lecture fantôme signifie que lorsque l'utilisateur lit une certaine plage de lignes de données, une autre transaction insère une nouvelle ligne dans la plage. Lorsque l'utilisateur lit à nouveau les lignes de données de la plage, il constatera qu'il y a de nouveaux " Fantôme ». D'ACCORD. Les moteurs de stockage InnoDB et Falcon résolvent ce problème grâce au mécanisme de contrôle de concurrence multiversion (MVCC, Multiversion Concurrency Control).
Sérialisable
Il s'agit du niveau d'isolement le plus élevé. Il force les transactions à être exécutées en série, ce qui rend impossible leur conflit les unes avec les autres. . En d’autres termes, il ajoute un verrou partagé sur chaque ligne de données lue. À ce niveau, de nombreux délais d'attente et conflits de verrouillage peuvent en résulter. Les problèmes qui peuvent survenir lors de la mise en œuvre de ces quatre secteurs d'isolation dans MySQL sont les suivants :Nous pouvons activer ou désactiver le mode de validation automatique en définissant la variable AUTOCOMMIT .
Le réglage 1 signifie activer AUTOCOMMIT, 0 signifie désactiver AUTOCOMMIT.
Cet article comprend principalement le contenu suivant :
(1) La notion de transactions et d'ACID
(2) Niveau d'isolement des transactions
(3) Transactions dans MySQL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!