Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erzeugt man Phantom-Reads?

Das "Phantom-Lesen" in MySQL auf RR-Isolationsebene ist tief verborgen, kann es aber dennoch reproduzieren. Hier sind die Schritte:

  1. Tabelle erstellen ab(a int Primärschlüssel, b int);

  2. Tx1:
    beginnen;
    wähle * aus ab; // leere Menge

  3. Tx2:
    beginnen;
    insert in ab values(1,1);
    commit;
  4. Tx1:
    wähle * aus ab; // leerer Satz, erwarteter Phantom-Read fehlt.
    update ab set b =2 wobei a =1; // 1 Zeile betroffen.
    wähle * aus ab; // 1 Zeile. Phantom hier lesen!!!!
    verpflichten;