twitter
Google Plus
tumblr
rss

17 Ağustos 2010 Salı

Transaction Management ne demek ?

● Transaction'ı bir veya daha fazla SQL komutu içeren mantıksal bir birim gibi düşünebiliriz. Önemli olan, bu SQL komutlarının atomik olarak çalıştırılması, yani ya hepsi birlikte gerçekleştirilecek, yada hiçbiri gerçekleştirilmeyecek. bunu "Tek celsede yapılması gereken iş" olarak düşünebilirsiniz. Klasik bir örnek vardır, bu örnek özerinden anlatmak daha kolay: Bankadan para transferi. Para bir hesaptan diğer hesaba aktarılacak, bunun ard arda üç SQL ile yapıldığını düşünelim. Birincisi, ilk hesaptan transfer edilecek mktarı düşüyor, ikincisi ikinci hesaba parayı yatırıyor, üçüncüsü de hesap hareketleri bilgisini kaydediyor olsun. Bu üçü birlikte gerçekleştirilmeli, veya hiç gerçekleşmemeli. Örneğin, parayı ilk hesaptan çekip ikinciye yatırırken hata alırsak, ilk işlem geri alınarak para hesaba geri yatırılmalı. Tabi bu işlemler esnasında, hepsi tamamlanmadan önce hesapların bakiyeleri eski bakiye olarak görünmeli. İşte bir transaction, bu işlemlerin gruplanarak atomikleştirilmesini sağlıyor.

● Oracle'da transaction kullanımı zorunlu, yani Oracle'da tek bir SQL komutu çalıştıracak olsak da bunu bir transaction'ın içinden yaparız. Sunucudan bir oturum açtığımızda(bağlandığımızda) ilk çalıştırılabilir SQL komutumuzla birlikte bir transaction açılır, bu sonlanınca otomatik olarak yeni bir transaction açılır, yeni transaction'un içine gireriz. SQL Server'da bu böyle değildir. Komutlar, kendi içlerinde atomiktir. Yani biz "BEGIN TRANSACTION" komutuyla yeni bir transaction oluşturmazsak, her komut ayrı transactionlar halinde çalışır, SQL komutları birbiri ardına işlenir, ve rollback ile geri alınamaz. Gördüğünüz gibi, bu kadar basit bir durum için bile, en yaygın iki DBMS arasında çok ciddi bir farklılık var. Bu yüzden oracle kullanacaksak Oracle'ın, başka bir veritabanı kullanacaksak onun "Transaction Management" gibi temel konularını öğrenmek zorundayız. Bunları birbirine eşdeğer olarak varsayamayız. Onbinlerce sayfalık dökümantasyonlar da bu yüzden var zaten.

● Bir transaction, aşağıdaki durumlarda sonlanır:

1- Bir COMMIT veya ROLLBACK komutu girilmesi: Bu komutlara ve çalıştırıldığında neler olduğuna daha sonra göz atacağız.
2- Bir DDL komutu (create, drop, rename yada alter) çalıştırılması: Mevcut transaction, DDL komutu çalışmadan önce ve sonra otomatik olarak COMMIT edilir ve yeni bir transaction başlatılır. Bunun iki anlamı var: a) Bir DDL komutu girdiğimizde hata almış da olsak, daha önceki transaction'ımız commit edilmiş olacaktır. b) DDL komutları rollback ile geri alınamaz.
3- Kullanıcının serverla bağlantısının kopması: Bu durumda transaction geri alınır(rollback).
4- Kullanıcı prosesinin anormal şekilde sonlanması: Bu durumda transaction geri alınır.
5- Kullanıcı bağlantısının normal şekilde sonlanması: Bu durum kullanılan uygulamaya göre değişir. SQL*Plus'da mevcut transaction commit edilir. Bazı uygulamaların bu konuda konfigürasyonu vardır, ona göre hareket eder. Uygulamalar, bağlantıyı koparmadan önce mevcut transaction'u mutlaka commit veya rollback etmelidir.





● Commit, transaction içinde işlemen komutların, yapılan değişikliklerin kalıcı hale getirilmesi demektir. Oracle'da, bir transaction başladığında, çalıştırılan komutlar ve etkileri diğer kullanıcılara yansımaz. Diğer kullanıcılar her zaman son commit edilmiş tutarlı veriyi görür. Transaction ile yapılan değişiklikler Data Buffer Cache'e ve redo log'lara yazılır, orjinal veriler ise undo log'lara yazılır. Commit edildiğinde, memory'deki redo log'a commit bilgisi eklenerek, redo log buffer disk'e (redo log dosyalarına) flush'lanır. Bu işlemden sonra fiziksel bir hata dışında (diskin uçması) ne olursa olsun, verimiz commit'lenmiş demektir ve artık rollback ile geri alınamaz. Row'lar üzerindeki locklar bırakılır ve transaction sonlanır. Tüm kullanıcılar artık sadece yeni veriyi görebilir. Daha sonraki ilk çalıştırılabilir SQL komutuyla yeni bir transaction başlatılır.

● Commit, çok kısa süren bir işlemdir. transaction içinde değiştirilen veri yoğunluğuna ve transaction'ın ne kadar uzun sürdüğüne bağlı değildir.

● Rollback, transaction içinde yapılan değişikliklerin iptal edilmesi, geri alınması demektir. Fakat bu yanlış anlaşılmasın, diğer kullanıcılar zaten orjinal veriyi görüyordu. İptal edilen bizim oturumumuzda, bizim transaction'ımızın yaptığı değişikliklerdir. Rollback, bunları hiç yapılmamış gibi iptal eder ve mevcut transaction'u sonlandırır. Rollback komutu girildiğinde, undo bufferdaki bilgiler data buffer'a yazılır. Dolayısıyla, üzerinde değişiklik yapılan veri ne kadar büyükse rollback o kadar uzun sürer. Rollback'in tamamlanma süresi commit'ten fazladır.

● Statement level rollback, SQL komutlarının kendi içinde atomik olması demektir. Bir SQL cümlesi, birden fazla row'da değişikliğe sebep oluyorsa, ya hepsi değiştirilir ya da -bir hatayla karşılaşılması durumunda- hiçbiri değiştirilmez. Bu tür operasyonun otomatik olarak geri alınmasına statement level rollback denir. Bu Oracle tarafından otomatik olarak gerçekleşiyor, bizim elle herhangi bir komut girmemile değil. Örneğin, bir UPDATE komutu 1000 satırı birden update'liyorsa, 600. satırda "Constraint Violation"dan dolay hata almışsak önceki 599 satır da otomatik olarak geri alınır, güncellenmiş halde kalmaz. Bunun gibi, bir komuttan dolayı trigger çalışmış veya prosedür çağrılmışsa, bir hata durumunda o komutun bütün etkileri geri alınır.

● Resumable Transactions, bazı şartlarda bazı hatalardan dolayı yarım kalan transaction'umuza devam edebilmemiz anlamına gelir. Bu şu şekilde olur: Büyük boyutta data ekleyecek veya değiştireceksek, önce o transaction'u resumable olarak belirlersek, transaction içindeki değişiklik enasında 1- Out of space condition, 2- Maximum extents reached condition, 3- Space quota exceeded condition durumlarından biri olursa (kısaca kota aşımı durumu) transaction hata verip işlemi geri almak yerine belirli bir süre bekler. O beklerken kotanın arttırılması gibi olayı kısıtlayan neden ortadan kaldırılırsa işlemini kaldığı yerden tamamlar. İşte bu duruma resumable transaction denir.


bu kadar terim cümlelerden sıkılanlar için biraz daha basitleştirecek olursak..

Transaction türkçe anlamı işlem demektir. Daha küçük parçalara ayrılamayan işlem demektir. Özellike bir grup işlemin arka arkaya gerçekleşmesine rağmen seri işlemler halinde ele alınması gerktiğinde kullanılır. Transaction bloğu içerisindeki işlemlerin tamamı gerçekleşinceye kadar hepsi gerçekleşmemiş varsayılır. Biraz açarasak ya hep ya hiç kuralı ile çalışır. Ya tüm işlemler düzgün olarak gerçekleşir ve geçerli kabul edilir yada bir kısım işlemler yolunda gitse bile, blok sona ermeden bir işlem bile yolunda gitmese hiçbir işlem olmamış kabul edilir.

Örnekleyecek olursak bankadaki bir eft işlemini düşünün, eft yapanın hesabından miktar düşülür eft gidecek yere aktarılır ve işlem gerçekleşmiş olur. Peki bu işlemler ortasında elektirikler kesilirse ne olur? Para eft anında elektirği kesildiğinde transfer ortada kalır alıcını hesabınada geçilmemiş olur. İşte Transaction bloğu içerisindeki işlemlerin tamamı gerçekleşinceye kadar hepsi gerçekleşmemiş olmasına denir.

1 yorum:

Adsız dedi ki...

SQL'e yeni başlayanlar için çok açıklayıcı olmuş. Eline sağlık.

Yorumlar Hakkında:


Yorum yapmaktan çekinmeyin, Yorumlar hem benim için teşvik, sizin içinde kendinizi ifade edebileceğiniz bir ortam! İyi veya kötü her türlü yoruma açığım. Ha bu arada unutmadan, yaptığınız yorumda bana cevap vermemi beklediğiniz birşey yazdıysanız, lütfen verdiğim cevabı okumak için 1-2 içinde blogumu tekrar kontrol edin.

Yorum Gönder

Etiketgiller

*#0228# Quick Start ne işe yarıyor (1) *#0228# quick start (1) .NET (1) .nomedia (1) .torrent uzantılı (1) 8 mart nedir (1) Battle Royale 0xc000007b hatası (1) Bedelli askerlik (1) Beyaz Ekran Sorunu (2) Blog güncellemeleri (1) Bu ağa bağlanamıyor (1) Bu öğe bulunamadı (1) Call of Duty (1) Cd key already in use (1) DNS (1) DNS adresleri (1) DNS listesi (1) Dosya Şifreleme (1) En Hızlı DNS (1) English Proverbs (1) FIFA 18 (1) FIFA 18 DirectX Function Sorunu (1) FM 2018 (1) Facebook Hesabım kapatıldı (1) Football Manager 2018 (1) Fortnite (1) Fortnite Battle Royale (1) GTA 5 (2) GTA 5 Açılmama Sorunu (1) GTA 5 yükleme Sorunu (1) GTA v donma sorunu (1) Google (9) Gta 5 Online bağlantı sorunu (1) Hata Kodu: -130 Sayfa yüklenemedi (bilinmeyen hata) (1) Hayat Hikayesi (1) Ingilizce fillerin 2. ve 3. halleri (1) Kamera Sorunu (2) Kilo Almak icin (1) MSVCR100.DLL (1) Masterchef (1) Masterchef Türkiye (1) Mazda 3 2018 (1) Mukemmel Sayı (1) Mustafa (1) Need For Speed Payback (1) Need For Speed The Run (1) Need for Speed (5) Need for Speed hatası (1) PES 2017 PES 2018 (1) PLAYERUNKNOWN'S BATTLEGROUNDS (1) QR Kod Nedir (1) RISK: Global Domination (1) Seditio eklenti (4) Serel Yereli (1) Sevgili (2) Toyota Auris (2) Trackmania Nations Forever (1) a/an ve the Kullanımı (1) android dns adresi değiştirme (1) android dosya gizleme hesap makinesi (1) android gizli klasör (1) android market (2) android porno (1) android yasakli site acma programi (1) arkadaş ekleme (1) ayrılık yazıları (1) ayrılık şiirleri (1) ayrılıkla ilgili (1) açamıyorum (1) blog tema değişimi (2) bowling oyunları (1) bowling skor (1) bowling strike (1) bowlingde skor (1) bozuluyor (1) bu ağa bağlanılamıyor windows 8 (1) clash royale (1) clash royale deste (1) core_ets2mp.dll Hatası (1) counter strike cd key sorunu (1) cs 1.6 (1) cs cd key değiştirme işlemi (1) ders notu (1) deyimler (2) disk temizleme (1) dll (2) dll dosyası (1) dll hatası (2) dns ayarları (3) dosya gizleme (1) dosya silinmiyor (1) dowland (1) dünya kadınlar günü (1) e-devlet (1) ets 2 hava basıncı sorunu (1) ets2 (3) ets2 düşük hava basıncı (1) euro truck simulator 2 (2) euro truck simulator 2 multiplayer (1) face hackleme (1) facebook filmi (1) facebook giremiyorum (3) facebook hesabıma ulaşamıyorum (1) facebook neden açılmıyor (1) facebookta bakım (1) facede profiline kimler bakmış (1) filtrenize göre iş bulunmuyor (1) fiyat listesi (1) fiyatı ne kadar (1) giremiyorum (1) google güvenlik (1) google hatası (1) gta v kasma sorunu (1) göremiyorum (1) görünmesin (1) gösterimi (1) göstermek (1) göstermiyor (2) gözükmesin (1) gözükmesini engellemek (1) güncelleme (2) güncelleme duraklatıldı (1) haberi (1) haberleri (3) hack (2) happy new year (1) hata veriyor (1) hatası (3) hatchback (1) ie7 (1) ie8 (1) ilginç (1) ilişki durumu (1) ilk kim (1) inanılmaz evlenme teklifi (1) inceleme (5) indir (9) indirim kodu (1) ingilizce ders (1) ingilizce sözler (1) instagram (5) instagram durduruldu (1) instagram geçiçi olarak engellendin (1) instagram güncelleme (1) instagram hatası (1) internet explorer (1) ios (6) ios 11 (1) ios 11 şarj sorunu çözümü (1) istanbul (3) istatistikler (1) iş takip programı (1) javascript (1) kadın (1) kaldırır mı (1) kapandı (1) karakter problemi (1) karakter sorunu (1) kentsel dönüşüm (1) kentsel dönüşüm kira yardımı (1) kentsel dönüşüm laboratuvarı (1) kilitleniyor (1) kim 500 milyar ister (1) kim milyoner olmak ister (15) kimdir (10) klasör gizleme (1) komik resimler (1) korkunç (1) kredi hesaplama (1) kredi notu düşmeyen bankalar (1) kumanda (1) kurucusu kim (1) kurulumu (2) kız arkadaş (1) kız arkadaşı (1) kız tavlama (1) library (1) mantığı nedir (1) mazda 3 inceleme (1) mp3 (4) mp3 açılımı nedir (1) mükemmel sayı nedir (1) müslüm gürses kimdir (1) nasıl (23) nasıl girerim (1) nasıl gizlenir (1) nasıl kaldırılır (1) nasıl kapatılır (1) nasıl oynanır (1) nasıl silinir (1) nasıl yaparım (6) nasıl çalışır (3) ne (7) ne demek (11) ne işe yarar (10) ne kadar (1) ne zaman (11) ne zaman kuruldu (1) neden (4) neden açılmıyor (1) neden hata veriyor (1) nfs (5) nfs hot pursuit (2) nfs the run (1) niye (8) niçin (1) oyun (30) oyun hilesi (1) pes 2011 (1) philips tv (1) php (4) porna (1) programı (3) pugb (3) resimleri (1) s-voice dil değiştirme (1) s6 özellikleri (1) samsung (10) seditio (6) sevgilim (1) sevk tarihi ne demek (1) sistem gereksinimleri (4) sorun (3) sorun çözümü (27) sorunları (1) sorunu (8) sosyal medya (5) steam (9) steam hatası (4) strike nedir (1) sözleri (4) tavsiye android uygulamaları (1) tavsiye edilen android uygulamaları (1) teknoloji (2) telefon (18) the game malfunctioned hatası (1) troubleshoot3r (2) troubleshooter (21) truckersMP (1) türkçe (3) türkçe yama (2) update (2) update hatası (1) video (3) videoları (2) web dizayn (1) web tasarım (1) web tasarım adana (1) win 10 (1) win10 (3) win7 (4) windows (7) windows 10 (6) windows 7 (5) xinput1_3.dll (1) yasaklı sitelere girmek (2) zaman (1) Çözümü (8) çalışma prensibi (1) çalışmayı durdurdu (2) çalışmıyor (2) çalıştırma (1) çözüldü (1) çözüm (5) örnek proje (1) örneği (1) özellikleri (2) öğe bulunamadı hatası konumunu doğrulayıp yeniden deneyin win 10 (1) şarj sorunu (1)