Sobes.tech
Senior

Postgres'te işlemlerle çalıştınız mı ve hangi izolasyon seviyeleriyle karşılaştınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

PostgreSQL'de, standart SQL komutları BEGIN, COMMIT ve ROLLBACK kullanarak ve Go'daki sürücüleri, örneğin database/sql, kullanarak işlemlerle çalıştım.

İzolasyon seviyelerine gelince, PostgreSQL dört ana seviyeyi destekler:

  • Read Uncommitted (aslında Read Committed gibi çalışır, çünkü PostgreSQL kirli okuma yapmaya izin vermez)
  • Read Committed (varsayılan seviye) — işlem, her okuma işleminin başında onaylanmış verileri görür
  • Repeatable Read — tüm okuma işlemlerinde aynı veri anlık görüntüsünü görmesini sağlar, tekrar eden okumaları önler
  • Serializable — en katı seviye, işlemlerin tam izolasyonunu sağlar, sanki sıralı olarak yürütülüyorlarmış gibi

Go'da, izolasyon seviyesini ayarlamak için TxOptions metodunu, bir işlem başlatırken kullanabilirsiniz:

opts := &sql.TxOptions{
    Isolation: sql.LevelSerializable,
}
tx, err := db.BeginTx(ctx, opts)

Gereksinimlere bağlı olarak farklı seviyeleri kullandım.