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

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

不言
Libérer: 2018-10-17 16:58:01
avant
2626 Les gens l'ont consulté

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;
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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

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

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!

Étiquettes associées:
source:segmentfault.com
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