Sobes.tech
Junior — Middle

Sistemdeki işlemlerin doğru çalışmasını sağlamak için işlem etkileşim modunu nasıl belirlenir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Sistem içindeki işlem etkileşim modu, işlemlerin izolasyon seviyesi tarafından belirlenir; bu seviye, bir işlemin yaptığı değişikliklerin diğerleri tarafından ne zaman ve nasıl görünür olacağını belirler. İşlemlerin doğru çalışması için, performans ve veri bütünlüğü arasında denge kurarak uygun bir izolasyon seviyesi seçmek önemlidir.

Go'da, database/sql paketi aracılığıyla veritabanlarıyla çalışırken, bir işlem başlatılırken izolasyon seviyesi ayarlanabilir:

import (
    "context"
    "database/sql"
)

func startTransaction(db *sql.DB) (*sql.Tx, error) {
    ctx := context.Background()
    tx, err := db.BeginTx(ctx, &sql.TxOptions{
        Isolation: sql.LevelSerializable, // en katı izolasyon seviyesi
    })
    return tx, err
}

Ana izolasyon seviyeleri:

  • Read Uncommitted — onaylanmamış değişiklikleri görmeye izin verir (kirlilik okuma).
  • Read Committed — sadece onaylanmış değişiklikler görünür.
  • Repeatable Read — bir işlemde okunan verilerin, işlemin tamamlanmasına kadar değişmeyeceğini garanti eder.
  • Serializable — en katı, işlemler sıralı gibi yürütülür.

Seçim, veri bütünlüğü ve performans gereksinimlerine bağlıdır. İşlemlerin doğru çalışmasını sağlamak için, uygun izolasyon seviyesini açıkça tanımlamak ve ayarlamak gerekir.