Ana içeriğe geç

Transaction

Veritabanı İşlemi

Türkçe karşılığı
işlem
Okunuşu
trenzekşın

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/transaction

Kısaca

Transaction, tek bir bütün olarak başarılı ya da başarısız olan veritabanı işlemleri grubudur; böylece veri asla yarım kalmış, tutarsız bir durumda bırakılmaz.

Veritabanı transaction'ı (işlemi) nedir?

Transaction, birkaç veritabanı işlemini bir araya getirir ve bunların hep ya da hiç şeklinde tek bir eylem olarak ele alınmasını sağlar. Tüm adımlar başarılı olursa değişiklikler COMMIT ile kaydedilir; bir şeyler ters giderse ROLLBACK hepsini, sanki transaction hiç olmamış gibi geri alır.

Klasik örnek banka havalesidir: bir hesaptan para düşülmesi ve diğerine eklenmesi ya ikisi birden gerçekleşmeli ya da hiçbiri. Transaction olmadan, iki adım arasındaki bir çökme paranın ortadan kaybolmasına yol açabilir. Transaction ile veritabanı, iki güncellemenin birlikte uygulanacağını garanti eder.

Güvenilir transaction'lar ACID özelliklerini izler. Atomiklik (atomicity) hep ya da hiç demektir; tutarlılık (consistency) verinin her zaman geçerli bir durumdan diğerine geçmesi demektir; yalıtım (isolation) eşzamanlı transaction'ların birbirlerinin bitmemiş işini görmemesi demektir; dayanıklılık (durability) ise onaylanmış değişikliklerin çökmelerden ve elektrik kesintilerinden sağ çıkması demektir. Veritabanları, katılığı performansla takas eden Read Committed ve Serializable gibi farklı yalıtım düzeyleri sunar.

Veritabanı transaction'ı, bir satın alma gibi iş süreci transaction'ından farklıdır; ancak biri çoğu zaman diğerini kaydetmek için kullanılır. Transaction'lar, tek bir işlemin birkaç veritabanına yayıldığı mikroservisler gibi dağıtık sistemlerde de zorlaşır; orada ekipler çoğu zaman tek bir ACID transaction yerine, telafi adımları içeren bir dizi yerel transaction olan saga gibi örüntüler kullanır.

Bir bakışta

Ada'dan Ben'e 100 aktarımı tek bir transaction olarak: BEGIN, Ada'dan 100 düş, Ben'e 100 ekle, COMMIT. Her şey başarılı olursa iki değişiklik birlikte kaydedilir. COMMIT'ten önce herhangi bir şey başarısız olursa veritabanı geri alır (rollback) ve iki bakiye de olduğu gibi kalır.BEGINbaşlaAda −100UPDATE accounts…Ben +100UPDATE accounts…COMMITikisini kaydetKaydedildiAda 400 → 300 · Ben 100 → 200COMMIT'ten önce çökme ya da hataROLLBACKAda 400 · Ben 100, eskisi gibi
Ya hepsi ya hiçbiri: ya iki değişiklik birden kaydedilir ya da hiçbiri. Kimse paranın Ada'dan çıkıp henüz Ben'e ulaşmadığı ara durumu görmez.

Önemli noktalar

  • Transaction, işlemleri hep ya da hiç şeklinde tek bir birimde toplar.
  • COMMIT değişiklikleri kaydeder; ROLLBACK geri alır.
  • ACID; atomiklik, tutarlılık, yalıtım ve dayanıklılığın kısaltmasıdır.
  • Yalıtım düzeyleri, eşzamanlı transaction'ların birbirini nasıl etkileyeceğini belirler.

Örnek

Transaction içinde bir banka havalesisql
-- Transfer $100 from account 1 to account 2
BEGIN;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

-- Save both changes together
COMMIT;

-- If something had failed, you would run ROLLBACK instead,
-- and neither update would be applied

Sık sorulan sorular

Veritabanlarında ACID ne demektir?

ACID; atomiklik, tutarlılık, yalıtım ve dayanıklılığın kısaltmasıdır. Hatalar, çökmeler ya da çok sayıda eşzamanlı kullanıcı olsa bile veritabanı transaction'larını güvenilir tutan dört garantidir.

COMMIT ile ROLLBACK arasındaki fark nedir?

COMMIT, mevcut transaction'da yapılan tüm değişiklikleri kalıcı olarak kaydeder; ROLLBACK ise onları atar ve veriyi transaction başlamadan önceki haline döndürür.

NoSQL veritabanları transaction'ları destekler mi?

Birçoğu destekler. Örneğin MongoDB çok dokümanlı ACID transaction'ları destekler, ancak garantiler ve performans veritabanına göre değişir; bu yüzden kullandığınız sistemin belgelerine bakın.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar