Sobes.tech
Junior — Middle

Milyen tranzakcióelzárási szinteket állított be manuálisan a gyakorlatban?

sobes.tech MI

Válasz az MI-től

A Go nyelvű adatbázisokkal való gyakorlatban gyakran szükség van a tranzakciók izolációs szintjeinek kézi beállítására a párhuzamosság ellenőrzése és a versenyképes hozzáférési problémák megelőzése érdekében. Az általánosan használt izolációs szintek:

  • Read Uncommitted — a legalacsonyabb szint, lehetővé teszi a nem megerősített változtatások olvasását, ami "szennyezett" olvasásokhoz vezethet.
  • Read Committed — megakadályozza a nem megerősített adatok olvasását, de lehetővé teszi a nem ismétlődő olvasásokat.
  • Repeatable Read — garantálja, hogy a tranzakció során olvasott adatok nem változnak a végrehajtásukig.
  • Serializable — a legszigorúbb szint, teljes izolációt biztosít a tranzakciók között, mintha egymás után futnának.

Go-ban, a database/sql csomag használatával, az izolációs szintet a BeginTx metódus sql.TxOptions{Isolation: sql.LevelSerializable} paraméterével lehet beállítani. Például:

ctx := context.Background()
tx, err := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelRepeatableRead})
if err != nil {
    // hiba kezelése
}
// tranzakcióval való munka