Heim  >  Artikel  >  Datenbank  >  Einführung in die Notwendigkeit und Klassifizierung von Sperren in MySQL

Einführung in die Notwendigkeit und Klassifizierung von Sperren in MySQL

不言
不言nach vorne
2018-10-17 16:57:372586Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die Notwendigkeit und Klassifizierung von Sperren in MySQL. Ich hoffe, dass er für Freunde hilfreich ist.

Wenn die Anzahl der Benutzerbesuche zunimmt, ist die Datenbank häufig ein Leistungsengpass, aber nicht nur ein Leistungsengpass, sondern auch die Datensicherheit. Zu diesem Zeitpunkt ist der Sperrmechanismus sehr hoch notwendig.

Durch Parallelität verursachte Datensicherheitsprobleme werden hauptsächlich in drei Aspekte unterteilt: Dirty Reading, Phantom Reading und nicht wiederholbares Lesen

1 Dirty Reading

Dirty Reading ist ein Transaktionales Lesen Es wurden nicht festgeschriebene Daten aus einer anderen Transaktion abgerufen.

时间线  事务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. Phantom-Lesen

Phantom-Lesen ist, wenn eine Transaktion die von einer anderen Transaktion eingefügten Daten liest

时间线       事务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 🎜 >

Nicht wiederholbares Lesen bedeutet, dass die Ergebnisse, die durch mehrmaliges Lesen einheitlicher Daten zurückgegeben werden, inkonsistent sind. Im Gegensatz zum schmutzigen Lesen werden bereits übermittelte Daten gelesen. Im Gegensatz zum Phantom-Lesen werden Daten aktualisiert, während beim Phantom-Lesen Daten eingefügt werden.


时间线   事务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 löst die oben genannten drei Probleme durch die Isolierung von Transaktionen

Es gibt 4 Isolationsstufen

隔离级别           脏读   幻读   不可重复读
未提交读(RUC)       是     是      是
已提交读(RC)        否     是      是
可重复读(RR)        否     是      否
可串行化            否     否      否
MySQL implementiert die Transaktionsisolation durch den Sperrmechanismus

Sperren sind wie folgt klassifiziert

Einführung in die Notwendigkeit und Klassifizierung von Sperren in MySQL


Das obige ist der detaillierte Inhalt vonEinführung in die Notwendigkeit und Klassifizierung von Sperren in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen