Maison  >  Article  >  base de données  >  Introduction à la nécessité et à la classification des verrous dans MySQL

Introduction à la nécessité et à la classification des verrous dans MySQL

不言
不言avant
2018-10-17 16:57:372600parcourir

Cet article vous apporte une introduction à la nécessité et à la classification des verrous dans MySQL. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Lorsque le nombre de visites d'utilisateurs augmente, la base de données est souvent le goulot d'étranglement des performances d'un système, mais pas seulement le goulot d'étranglement des performances, la sécurité des données apparaît également. À ce moment-là, le mécanisme de verrouillage est très. nécessaire.

Les problèmes de sécurité des données causés par la concurrence sont principalement divisés en trois aspects : la lecture sale, la lecture fantôme et la lecture non répétable

1. La lecture sale

La lecture sale est un. lecture transactionnelle Des données non validées provenant d'une autre transaction ont été obtenues.

时间线  事务1                               事务2
  1    begin;                                  
  2    select * from lock where id = 1;
  3                                       begin;
  4                                       update lock set name='dirty';
  6    select * from lock where id = 1;
  7    commit;                            commit;

2. Lecture fantôme

La lecture fantôme se produit lorsqu'une transaction lit les données insérées par une autre transaction

时间线       事务1                            事务2
   1        begin;
   2        select * from lock where id > 1;
   3                                        begin;
   4                                        insert lock select 2;
   5                                        commit;
   6        select * from lock where id > 1;
   7        commit;

3. autorisé Lecture répétée

La lecture non répétable signifie que les résultats renvoyés en lisant plusieurs fois les mêmes données sont incohérents. Différent de la lecture sale, il s'agit de la lecture de données déjà soumises ; différente de la lecture fantôme, il s'agit de la mise à jour des données, tandis que la lecture fantôme insère des données.

时间线   事务1                            事务2
        begin;
        select * from lock where id = 1;
                                        begin;
                                        update lock set name='non-rr';
                                        commit;
        select * from lock where id = 1;
        commit;

MySQL résout les trois problèmes ci-dessus en isolant les transactions
Il existe 4 niveaux d'isolement

隔离级别           脏读   幻读   不可重复读
未提交读(RUC)       是     是      是
已提交读(RC)        否     是      是
可重复读(RR)        否     是      否
可串行化            否     否      否

MySQL implémente l'isolation des transactions via le mécanisme de verrouillage

La classification des serrures est la suivante

Introduction à la nécessité et à la classification des verrous dans MySQL


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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer