Sobes.tech
Junior

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.