Maison > Article > base de données > MySQL Advanced Ten - Application des transactions
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,'A',4000); insert into account values(2,'B',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é
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)
set autocommit = 0; insert into account values(3,'C',3000); savepoint a1; insert into account values(4,'D',3000); savepoint a2; insert into account values(5,'E',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) !