Maison > Article > base de données > Comment modifier le niveau d'isolement de MySQL
Comment modifier le niveau d'isolement mysql : 1. Recherchez "skip-external-locking" ; 2. Ajoutez le contenu de "transaction-isolation = READ-COMMITTED" ;
L'environnement d'exploitation de cet article : système Windows 7, mysql version 5.5, ordinateur Dell G3.
Comment modifier le niveau d'isolement de mysql ?
Niveau d'isolement des transactions MySQL et méthode de modification
Modifier le niveau d'isolement des transactions Mysql :
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Ajouter (lire le contenu de la soumission) après la position :
lc-messages-dir = /usr/share/mysql skip-external-locking
:
transaction-isolation = READ-COMMITTED
Enregistrez et redémarrez le service MySQL :
sudo service mysql restart
Les 4 niveaux d'isolement de SQL
Read Uncommit (Lire le contenu non validé)
À ce niveau d'isolement, toutes les transactions peuvent voir les résultats d'exécution des autres transactions non validées. Ce niveau d'isolation est rarement utilisé dans les applications pratiques car ses performances ne sont guère meilleures que les autres niveaux. La lecture de données non validées est également appelée lecture sale.
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 le niveau 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. Ce niveau d'isolement prend également en charge ce que l'on appelle la lecture non répétable, car d'autres instances de la même transaction peuvent avoir de nouvelles validations pendant le traitement de l'instance, de sorte que la même sélection peut renvoyer des résultats différents.
Lecture répétable (Mysql par défaut est : REPEATABLE-READ)
Il s'agit du niveau d'isolation de transaction par défaut de MySQL. Il garantit que plusieurs instances de la même transaction verront le même message lors de la lecture simultanée de la ligne 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 les lignes de données dans la plage, il constatera qu'il y a de nouveaux " Fantôme " OK. . 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 résout le problème de lecture fantôme en forçant les transactions à être ordonnées afin qu'elles ne puissent pas entrer en conflit les unes avec les autres. En bref, 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. ?
Lorsque les mêmes données sont lues, les problèmes susceptibles de se produire sont :
Dirty Read (Drity Read) : une certaine transaction a mis à jour une copie des données et une autre transaction a lu les mêmes données à ce moment-là. Pour une raison quelconque, si l'opération RollBack précédente est effectuée, les données lues par la transaction suivante seront incorrectes.
Lecture non répétable : Les données sont incohérentes entre deux requêtes d'une transaction. Cela peut être dû aux données d'origine mises à jour par une transaction insérée entre les deux requêtes.
Lecture fantôme : le nombre d'éléments de données dans deux requêtes d'une transaction est incohérent. Par exemple, une transaction interroge plusieurs lignes de données, tandis qu'une autre transaction insère plusieurs nouvelles colonnes de données à ce moment-là. transaction précédente, vous constaterez qu'il existe plusieurs colonnes de données qu'elle n'avait pas auparavant.
# !
Après Django2.
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!