MySQL est un système de gestion de base de données relationnelle largement utilisé qui prend en charge le traitement des transactions. Une transaction est un ensemble d'opérations de base de données exécutées ensemble comme une unité logique. Afin de garantir la cohérence et l'isolation des transactions, MySQL propose différents niveaux d'isolation des transactions.
L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.16, ordinateur DELL G3.
MySQL est un système de gestion de base de données relationnelle largement utilisé qui prend en charge le traitement des transactions. Une transaction est un ensemble d'opérations de base de données exécutées ensemble comme une unité logique. Afin de garantir la cohérence et l'isolation des transactions, MySQL propose différents niveaux d'isolation des transactions.
Le niveau d'isolement des transactions définit la visibilité et la portée de l'influence entre les opérations au sein d'une transaction et les autres transactions. MySQL propose quatre niveaux d'isolation des transactions : READ UNCOMMITTED (lecture non validée), READ COMMITTED (lecture validée), REPEATABLE READ (lecture répétable) et SERIALIZABLE (sérialisable). Ces niveaux d'isolement fournissent à leur tour un degré d'isolement plus élevé, mais peuvent également entraîner une surcharge de performances de concurrence plus élevée.
Par défaut, le niveau d'isolation des transactions de MySQL est RÉPÉTABLE LIRE. À ce niveau, une transaction crée une vue cohérente, un instantané de la base de données à un moment donné où la transaction a commencé. Cela signifie que les données vues par une transaction lors de son exécution sont différentes des données que d'autres transactions modifient simultanément. Même si d'autres transactions modifient certaines données, ce que la transaction voit dans sa propre vue de cohérence reste l'instantané du début de la transaction.
Niveau LECTURE RÉPÉTABLE, la transaction peut garantir les points suivants :
1. Les données lues sont cohérentes avec le début de la transaction et ne changeront pas lors de l'exécution de la transaction.
2. Les modifications apportées par d'autres transactions parallèles au cours de la transaction sont invisibles pour la transaction et n'affecteront pas les données lues par la transaction.
3. Les modifications apportées par une transaction à d'autres transactions sont invisibles et les autres transactions parallèles ne peuvent pas lire les données non validées dans la transaction.
RÉPÉTABLE L'avantage du niveau READ est qu'il offre une cohérence et une isolation élevées des données et qu'il convient aux scénarios dans lesquels plusieurs transactions simultanées lisent les mêmes données. Cependant, cela peut également entraîner une surcharge de performances de concurrence plus élevée et des conflits de verrouillage.
Dans les applications réelles, nous pouvons choisir le niveau d'isolation des transactions approprié en fonction des besoins spécifiques de l'entreprise et des exigences de performances. Si vous avez besoin de performances de concurrence plus élevées et de conflits de verrouillage réduits, vous pouvez envisager de réduire le niveau d'isolation des transactions. Si vous accordez plus d'attention à la cohérence et à l'isolation des données, vous pouvez choisir un niveau d'isolation des transactions plus élevé.
MySQL fournit des instructions pour définir le niveau d'isolation des transactions, qui peuvent être utilisées avant le début de la transaction ou au sein de la transaction. Par exemple, vous pouvez utiliser l'instruction suivante pour définir le niveau d'isolation des transactions sur READ COMMITTED :
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
En bref, le niveau d'isolation des transactions par défaut de MySQL est REPEATABLE ; READ, qui offre une cohérence et une isolation des données plus élevées, mais peut entraîner une surcharge de performances de concurrence plus élevée. En fonction du scénario d'application spécifique, nous pouvons choisir de manière flexible le niveau d'isolation des transactions approprié.
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!