Maison  >  Article  >  base de données  >  MySQL Advanced Ten - Application des transactions

MySQL Advanced Ten - Application des transactions

黄舟
黄舟original
2016-12-29 16:47:39959parcourir

1. Qu'est-ce qu'une transaction ?

Pourquoi devrions-nous utiliser la technologie transactionnelle ? De nos jours, de nombreux logiciels sont multi-utilisateurs, multi-cours et multi-thread. Une même table peut être utilisée par plusieurs personnes en même temps. Afin de conserver la cohérence des données, la notion de transactions est proposée.

1. Vérifiez si la base de données prend en charge les transactions (InnoDB prend en charge) ?

show engines;

2. Vérifier le moteur de stockage par défaut actuel de MySQL ?

show variables like '%storage_engine%';

3. Vérifier le moteur de stockage d'une certaine table ?

show create table test;

4. Des modifications à la structure de rangement de la table ?

Créer une table InnoDB : Créer une table ... type=InnoDB;Alter table table_name type=InnoDB;

Exemple :

1. Créer une banque de base de données<.>

create table account(  
aid int not null,  
accname varchar(20) not null,  
accmoney decimal(10,2) not null,  
primary key(aid))engine = innodb default charset = gbk;
2. Insérez deux éléments de données dans la table du compte

insert into account values(1,&#39;A&#39;,4000);  
insert into account values(2,&#39;B&#39;,2000);
3 Commencez la transaction de la table

start transaction;
4. à la soumission active

commit;  
set autocommit = 0;
5. Exécutez l'instruction suivante

<pre name="code" class="sql">update account set accmoney = accmoney - 1000 where aid = 1;  
update account set accmoney = accmoney + 1000 where aid = 2;
6 Ouvrez une nouvelle fenêtre de commande MySQL pour afficher la table des comptes

select * from account;
et vous constaterez que les données n'ont pas changé. , car les instructions modifiées ci-dessus, la base de données n'a pas émis d'instructions de modification


7. Si vous effectuez une requête dans la fenêtre d'origine, vous constaterez que les données ont changé

8. Soumettez le commit physique
select * from account;

9 Vérifiez les données dans un autre client et vous constaterez que les données ont changé
commit;

3. . Annulation de la transaction et point de restauration
select * from account;

1. Transaction La restauration

revient à l'état des données avant la transaction. grâce à la restauration.

Supplément : commit et chaîne ; signifie qu'une nouvelle transaction est rouverte après avoir validé la transaction.

rollback et release ; signifie la déconnexion du client après le rollback.

2. Point de restauration (instance)

Affichez les informations de la base de données
set autocommit = 0;  
insert into account values(3,&#39;C&#39;,3000);  
savepoint a1;  
insert into account values(4,&#39;D&#39;,3000);  
savepoint a2;  
insert into account values(5,&#39;E&#39;,3000);  
savepoint a3;

就会看到你插入的数据

如果你想回滚到某一状态只需rollback调用一下就行;

如:回到savepoint a1的状态
puis exécutez l'instruction de requête
rollback to savepoint a1;

Vous verra une nouvelle donnée ajoutée au tableau.

4. Résumé des transactions

Les transactions doivent avoir 4 attributs :

Atomicité, cohérence, isolation et durabilité. Ces quatre propriétés sont souvent appelées propriétés ACIDE.

Atomicité : Une transaction est une unité de travail indivisible. Toutes les opérations incluses dans la transaction sont soit effectuées, soit aucune d'entre elles n'est effectuée.

Cohérence : Une transaction doit faire passer la base de données d'un état de cohérence à un autre état de cohérence. La cohérence et l’atomicité sont étroitement liées.

Isolement : l'exécution d'une transaction ne peut pas être interférée par d'autres transactions, c'est-à-dire que les opérations internes et les données utilisées par une transaction sont isolées des autres transactions simultanées et que les transactions exécutées simultanément ne peuvent pas interférer les unes avec les autres.

Durabilité : La durabilité devient également permanente. Une fois qu'une transaction est validée, ses modifications apportées aux données de la base de données doivent être permanentes. Les opérations ou pannes ultérieures ne devraient avoir aucun impact sur celui-ci.

Ce qui précède est le contenu de MySQL Advanced Ten - Application de transaction. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
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