1. ACID
Atomicité
Atomicité : Une transaction est considérée comme une unité de travail minimale indivisible, et l'ensemble de la transaction est soit Exécutez tout, soit annulez si tout échoue.
Cohérence
Cohérence : la base de données passe toujours d'un état cohérent à un autre état cohérent. Par exemple, même si l'opération de retrait d'argent échoue, parce que la transaction n'a pas été validée, les modifications apportées par la transaction ne seront pas enregistrées dans la base de données et les données seront toujours dans l'état avant l'exécution de la transaction. Si la transaction est exécutée avec succès, les données resteront inchangées après l'exécution.
Isolement
Isolement : les modifications apportées par une transaction ne sont pas visibles par les autres transactions avant d'être validées.
Durabilité
Durabilité : Une fois une transaction validée, ses modifications seront enregistrées définitivement dans la base de données.
Remarque
Tout comme les mises à niveau de la granularité des verrous augmenteront la surcharge du système, le traitement des transactions nécessite également que le système de base de données effectue davantage de travail supplémentaire. Une base de données prenant en charge ACID nécessite généralement une puissance de traitement CPU plus élevée et nécessite plus de mémoire et d'espace disque qu'une base de données qui n'a pas besoin de prendre en charge ACID. Par conséquent, les utilisateurs peuvent choisir les différents moteurs de base de données MySQL à travers différents scénarios d'application et faire preuve de flexibilité.
2. Niveau d'isolement
Il existe 4 niveaux d'isolement définis dans le standard SQL. Chaque niveau d'isolement des transactions correspond à la visibilité des modifications apportées par la transaction au sein et entre les transactions. Plus le niveau d’isolement est bas, plus la concurrence est forte et plus la surcharge du système est faible.
Lecture non validée
Lecture non validée : pour les transactions à ce niveau d'isolement, pendant le processus de modification des données, d'autres transactions peuvent toujours lire les données même si elles ne sont pas validées. Les transactions capables de lire des données non validées sont également appelées lectures incorrectes. Étant donné que les lectures incorrectes peuvent causer de nombreux problèmes dans les applications réelles, ce niveau d'isolement est généralement rarement utilisé.
Lecture validée
Lecture validée : (niveau de transaction par défaut de la base de données générale) Ce n'est qu'après l'exécution de la transaction en cours et la soumission des données que d'autres transactions peuvent lire les données. On l'appelle également lecture non répétable, car deux requêtes différentes exécutées par d'autres transactions peuvent donner lieu à deux résultats différents (lu une fois avant l'exécution de la transaction et une fois après l'exécution de la transaction).
Lecture répétable
Lecture répétable : (le niveau d'isolement par défaut de MySQL) résout le problème des lectures sales. Ce niveau garantit que les résultats de plusieurs lectures sont cohérents dans la même transaction. Mais le problème de la lecture fantôme ne peut toujours pas être résolu. Lecture fantôme : lorsque la transaction A lit des données dans une certaine plage, la transaction B effectue des opérations d'insertion et d'autres opérations de mise à jour sur la plage de données. Lorsque la transaction A lit à nouveau la plage d'enregistrements, une lecture fantôme se produit.
Sérialisable
Sérialisable : Lors de la lecture de chaque ligne de données, un verrou est ajouté pour forcer l'exécution de la transaction en série afin d'éviter les problèmes de lecture fantôme. Mais il est sujet aux problèmes de temporisation et de verrouillage de la concurrence. Il existe également relativement peu d'applications, et ce niveau n'est utilisé que lorsque la cohérence des données et l'absence de concurrence sont particulièrement nécessaires.
3. Mysql définit le niveau d'isolement des transactions
définit le niveau d'isolement des transactions en lecture
Nouvel isolement Le Le niveau prendra effet lorsque la prochaine transaction commencera à s'exécuter. Si vous devez modifier le niveau d'isolement de la transaction en cours, vous pouvez modifier le fichier de configuration. De plus, dans le blog précédent, deux moteurs de stockage prenant en charge les transactions fournies par MySQL : InnoDB et NDB Cluster ont été présentés.
Ce qui précède est le contenu de l'optimisation de la base de données MySQL (2) - Transactions MySQL Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !