Tranzakciók izolációs szintjei a PostgreSQL-ben
sobes.tech MI
Válasz az MI-től
PostgreSQL támogatja az SQL szabványban meghatározott négy standard tranzakció elszigeteltségi szintet:
-
Read Uncommitted — a legalacsonyabb elszigeteltségi szint. A PostgreSQL-ben valójában úgy viselkedik, mint a Read Committed, mivel nem engedélyezi a piszkos olvasásokat.
-
Read Committed (alapértelmezett) — a tranzakció csak azokat az adatokat látja, amelyek megerősítésre kerültek minden egyes egyedi lekérdezés kezdetekor. Nem ismételhető olvasások és fantom olvasások fordulhatnak elő.
-
Repeatable Read — a tranzakció úgy látja az adatokat, mint ahogy azok a tranzakció kezdetekor voltak. Garantálja az ismételhető olvasásokat, de fantom olvasások lehetnek.
-
Serializable — a legmagasabb elszigeteltségi szint, teljes tranzakciós szekvenciázást biztosít, megakadályozza a fantom olvasásokat és biztosítja az adatok konzisztenciáját, mintha a tranzakciók egymás után futnának.
Példa az elszigeteltségi szint beállítására Go-ban a database/sql és a pq driver használatával:
import (
"database/sql"
_ "github.com/lib/pq"
)
func setIsolationLevel(db *sql.DB) error {
tx, err := db.Begin()
if err != nil {
return err
}
defer tx.Rollback()
// Elszigeteltségi szint beállítása
_, err = tx.Exec("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE")
if err != nil {
return err
}
// További műveletek a tranzakcióban
return tx.Commit()
}