search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
343 gösterim

Autonomous Transaction  nedir?

Veri Tabanı kategorisinde 291 puan

1 cevap

1 oy

Bu konuyu anlatmak için önce bit transaction için grafik çizelim. Aşağıda grafiğimizi görüyorsunuz.

Bu grafikte x ekseninde zamanı görüyoruz. y de ise çağrılan fonksiyonları görüyoruz. Normalde bir programın çalışma mantığını madde madde işleyelim

  • t1 anında ana fonksiyon başlar (m). Bu herhangi bir stored procedure veya fonksiyon ya da programlama dili üzerindeki herhangi bir fonksiyon başlangıcı da olabilir.
  • t1 in başlangıcını aynı anda transaction başlangıcı kabul edelim.
  • kod akışı devam ederken t2 anında f1 fonksiyonunu çağırıyoruz
  • t3 anında f1 fonksiyonu bitmiş ve akış m fonksiyonuna dönmüş olacaktır.
  • daha sonra t4 de bir fonksiyon daha çağrılıyor ve bitip tekrar m yani ana fonksiyona işlem dönüp devam ediyor.
  • bu grafikteki kod akarken yapılan bütün değişiklikler de tn anında nihayete eriyor, yani commit veya rollback yapılıyor
  • bu akışın normal bir transaction akışı olduğu düşünülürse akışın herhangi bir yerinde yapılan insert/update/delete işleminin tn anında akibeti belirleniyor. Yani commit atılırsa hepsi birden db üzerine yazılıyor. Rollback yapılırsa hepsi birden siliniyor. Tipik bir transaction
Şimdi f2 fonksiyonunun/prosedürünün otonom (autonomous) olduğunu düşünelim ve yeni grafiğimize bakalım.
Normal işlemi zaten biliyoruz, geçelim. Burada dikkat etmemiz gereken kısım f2 fonksiyonunu kırmızı işarete aldığım. Bunun otonom bir transaction olduğunu düşünürüyoruz. O zaman ne olur?
  • İlk grafikten bildiğimiz üzere, bütün transaction içinde yapılan işlemlerin akibeti tn anında oluyordu.
  • Otonom transactionda yani f2 de, tn anındaki karar geçerli değil.
  • f2 kendi içinde bir transaction başlatır. Yani t4 anında kendi kendine çalışan ve m içindeki transactiona karışmayan bir transaction. Bu transaction da t5 anında biter. Burada olan insert/update/delete işlemleri burada kalır.
  • f2 nin son anında (satırında) eğer bir commit veya rollback yoksa kod derlenmez.
Peki en güzel kullanma alanı ne olabilir? Benim aklıma loglama işlemi geliyor. Normal bir transaction içinde bir iş yapıldı ve o işin loglanması gerekiyor. Bunu direk transaction bünyesinde yaparsanız en sonunda rollback olma ve kayda düşmeme ihtimali var. Otonom yaptığınız zaman her şekilde kayıt altına almayı garantiliyorsunuz.
Örnekler çoğaltılabilir.
İyi çalışmalar.
6.1k puan

İlgili sorular

0 oy
1 cevap 3.9K gösterim
3.9K gösterim
pl/sql'de procedure ve function kullanmakta kararsiz kaldim. Hangi durumda hangisi tercih edilmeli?
27 Ekim 2016 Veri Tabanı kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 215 gösterim
215 gösterim
selamlar, veri tabanında bulk olarak bir veri insert işlemi yapmaya çalışıyorum. her kayıt için de bir sequence numarası üretiyorum. ör: company_seq olsun. bunu 1 den başlatım. Cash size'ı 0 vermek ile vermemek bana performans açısından kazanç sağlar mı? bu değeri 100 veya 1000 yapmak çok farkeder mi?
25 Nisan 2018 Veri Tabanı kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
0 cevap 309 gösterim
309 gösterim
Oracle DB'de TPS (Transaction Per Second) ne anlama geliyor? DB'deki TPS değerini nasıl görebiliriz?
30 Kasım 2020 Veri Tabanı kategorisinde buzel 604 puan sordu
0 oy
3 cevap 1.2K gösterim
1.2K gösterim
Selamlar, Table partition, global index ve local index terimleri ne ifade ediyor. Teşekkürler
15 Şubat 2018 Veri Tabanı kategorisinde erkanerkisi 211 puan sordu
0 oy
1 cevap 1.8K gösterim
1.8K gösterim
flyway ile database migration yapma hakkında bilgisi olan var mı? Bir arkadaş migration işleri için flyway kullanmayı önerdi. Normal migration'dan ne farkı vardır?
21 Eylül 2017 Veri Tabanı kategorisinde tolgacelik.art 2.0k puan sordu