Care este diferența dintre o citire non-repetabilă (non-repeatable read) și o citire fantomă (phantom read)?
sobes.tech AI
Răspuns de la AI
Citirea non-repetabilă (non-repeatable read) și citirea fantomă (phantom read) sunt două tipuri diferite de anomalii care pot apărea în timpul accesului paralel la date în bazele de date.
-
Citirea non-repetabilă: apare atunci când, în cadrul aceleiași tranzacții, aceeași interogare la același înregistrare returnează date diferite pentru că o altă tranzacție a modificat sau șters acea înregistrare și a confirmat modificările.
-
Citirea fantomă: apare atunci când, într-o singură tranzacție, o interogare repetată pe un tabel cu o condiție returnează un număr diferit de rânduri pentru că o altă tranzacție a adăugat sau șters rânduri care satisfac condiția.
Exemplu:
-
Citirea non-repetabilă: o tranzacție citește un rând cu id=1, apoi o altă tranzacție actualizează acel rând și confirmă, apoi prima tranzacție citește din nou rândul cu id=1 și vede datele modificate.
-
Citirea fantomă: o tranzacție citește toate rândurile unde starea='activ', apoi o altă tranzacție adaugă un rând nou cu starea='activ' și confirmă, apoi prima tranzacție recitește rândurile cu starea='activ' și vede noul "rând fantomă".
Astfel, citirea non-repetabilă este legată de modificările în rândurile existente, în timp ce citirea fantomă se referă la apariția sau dispariția de rânduri noi care satisfac condiția.