Maison > base de données > tutoriel mysql > le corps du texte

Explication détaillée des transactions dans MySQL

黄舟
Libérer: 2017-09-11 11:39:06
original
1388 Les gens l'ont consulté

Transaction MySQL :

1. Instruction de contrôle des transactions MySQL

(1) Ouvrir la transaction

begin;
Copier après la connexion

(2). >

(3). Annulez la transaction
commit;
Copier après la connexion

(4). Définissez si la transaction est automatiquement validée
rollback;
Copier après la connexion

Par exemple :
set autocommit = {0 | 1}; // 0不自动提交,1自动提交
Copier après la connexion

.

Il s'agit d'une simple transaction pour insérer des données
begin;// 开启事务
insert into table_name values(内容);
commit;// 提交事务
Copier après la connexion

Il s'agit d'une simple transaction d'annulation pour insérer des données
begin;// 开启事务
insert into table_name values(内容);// 后悔了,不想插入数据了
rollback;// 回滚,取消这次的事务操作
Copier après la connexion

2 Déclaration d'isolation de transaction MySQL

Voir MySQL. Niveau d'isolement

(1).read-uncommit (lire le contenu non validé)
show variables like 'tx_isolation';
Copier après la connexion

Lecture sale (problèmes causés);

Un utilisateur deux fois Le contenu de la requête les résultats sont différents.

Définissez le niveau d'isolement par défaut (vous devez vous reconnecter une fois le réglage terminé) :

Deux utilisateurs se connectent à la base de données en même temps et démarrer les transactions respectivement.La transaction effectue des opérations d'ajout, de suppression et de modification, et la transaction d'un autre utilisateur n'effectue que des opérations de requête, la première termine l'opération sans la valider, et la seconde peut voir les résultats de l'opération, cependant, si la première annule la transaction. à ce moment, cette dernière ne verra pas des résultats différents de la dernière fois (c'est-à-dire le résultat d'aucune opération). C'est le problème de lecture sale
set global transaction isolation level read uncommitted;
Copier après la connexion

(2).read commit (read). le contenu soumis)

Les transactions ne peuvent voir que les modifications apportées par les transactions validées, et la même requête peut renvoyer des résultats différents. Ce niveau provoque des problèmes de lecture non reproductibles.

Définissez le niveau d'isolement par défaut (. vous devez vous reconnecter une fois le réglage terminé) ):

Dans une transaction, j'ai vu deux résultats de requête différents (similaires à une lecture sale).
set global transaction isolation level read committed;
Copier après la connexion

(3). lecture répétable(lecture répétable)

Il peut garantir que plusieurs instances de la même transaction verront les mêmes lignes de données lors de la lecture simultanée des données (niveau d'isolement Mornar de la base de données).

Définir la valeur par défaut niveau d'isolement (paramètre terminé. Vous devez ensuite vous reconnecter) :

C'est-à-dire que dans une transaction, peu importe la façon dont un autre utilisateur modifie les données, les résultats demandés dans cette transaction sont toujours les mêmes .
set global transaction isolation level repeatable read;
Copier après la connexion

***Soumission implicite de transaction*** :

3. Mécanisme de verrouillage InnoDB
alter table users engine = innodb;// 会造成事务的隐式提交
Copier après la connexion

(1) Sans aucune clé primaire ni index dans une table. , une transaction sera verrouillée. Tous les enregistrements de cette table ne peuvent pas être exploités par d'autres transactions.

(2).S'il y a une clé primaire ou un index dans une table, une transaction verrouillera une certaine ligne de données dans la table qu'elle exploite, et ne verrouillera pas la table entière si d'autres transactions opèrent sur d'autres données. dans ce tableau, cette fois Non affecté. Il convient de noter que le verrouillage au niveau de la ligne est ici un verrouillage d'espacement, c'est-à-dire si vous modifiez certaines lignes de données, par exemple en modifiant n lignes de données avec id<10.=. , alors, id = 11 Les données seront également verrouillées, ce qui doit être noté.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal