Sobes.tech
Junior — Middle

Amaliyotda qaysi tranzaksiya izolyatsiya darajalarini qo'lda o'rnatgansiz?

sobes.tech AI

AIdan javob

Go bilan ma'lumotlar bazalari bilan amaliyotda, ko'pincha paralellikni nazorat qilish va raqobatga asoslangan kirishni oldini olish uchun tranzaktsiyalarning izolyatsiya darajalarini qo'lda belgilash talab qilinadi. Men ishlatgan asosiy izolyatsiya darajalari:

  • Read Uncommitted — eng past daraja, tasdiqlanmagan o'zgarishlarni o'qishga ruxsat beradi, bu esa "iflos" o'qishlarga olib kelishi mumkin.
  • Read Committed — tasdiqlanmagan ma'lumotlarni o'qishni oldini oladi, lekin takrorlanadigan o'qishlarga ruxsat beradi.
  • Repeatable Read — tranzaksiya davomida o'qilgan ma'lumotlar uning tugashigacha o'zgarmasligini kafolatlaydi.
  • Serializable — eng qat'iy daraja, tranzaktsiyalarni to'liq izolyatsiya qiladi, go'yo ular ketma-ket bajarilmoqda.

Go'da, database/sql paketidan foydalanib, izolyatsiya darajasini BeginTx metodi orqali sql.TxOptions{Isolation: sql.LevelSerializable} parametri bilan belgilash mumkin. Masalan:

ctx := context.Background()
tx, err := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelRepeatableRead})
if err != nil {
    // xatoni boshqarish
}
// tranzaksiya bilan ishlash