Sobes.tech
Junior — Middle

Pratikte manuel olarak hangi izolasyon seviyelerini ayarladınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go ile veritabanlarıyla pratikte, paralelliği kontrol etmek ve eşzamanlı erişim sorunlarını önlemek için işlemlerin izolasyon seviyelerini manuel olarak ayarlamak sıkça gerekebilir. Kullandığım temel izolasyon seviyeleri:

  • Read Uncommitted — en düşük seviye, onaylanmamış değişiklikleri okuma izni verir, bu da "kirlilikli" okumalara yol açabilir.
  • Read Committed — onaylanmamış verilerin okunmasını engeller, ancak tekrar eden okumalara izin verir.
  • Repeatable Read — bir işlemde okunan verilerin, işlem tamamlanana kadar değişmeyeceğini garanti eder.
  • Serializable — en katı seviye, işlemlerin tam izolasyonunu sağlar, sanki sıralı olarak yürütülüyorlarmış gibi.

Go'da, database/sql paketini kullanırken, izolasyon seviyesini BeginTx yöntemiyle sql.TxOptions{Isolation: sql.LevelSerializable} gibi parametrelerle ayarlayabilirsiniz. Örneğin:

ctx := context.Background()
tx, err := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelRepeatableRead})
if err != nil {
    // hata işleme
}
// işlemle çalışma