Örnek sorular
Transactions IsolationZorluk 1
ACID kısaltmasında Atomicity bir transaction için neyi garanti eder?
- aCommit ettikten sonra değişikliklerinin çökmeye rağmen kalıcı olmasını
- bStatement'larının ya hep birlikte etki etmesini ya da hiçbirinin etmemesini✓
- cEşzamanlı transaction'ların birbirlerinin commit edilmemiş değişikliklerini görememesini
- dVeritabanını geçerli bir durumdan başka geçerli bir duruma taşımasını
Açıklama:Atomicity 'ya hep ya hiç' özelliğidir: transaction'ın işlemleri ya tümüyle commit olur ya tümüyle rollback edilir. (a) Durability, (c) Isolation, (d) ise Consistency'dir — ACID'in her biri farklı bir konuyu ele alan diğer üç harfi.
Transactions IsolationZorluk 1
ACID kısaltmasında Durability neyi garanti eder?
- aTransaction'ın ömrü boyunca tutarlı bir snapshot görmesini
- bHer transaction'ın çalışan tek transaction'mış gibi davranmasını
- cTransaction'ın ya tümüyle tamamlanmasını ya da etkisiz şekilde rollback edilmesini
- dBir transaction commit ettikten sonra değişikliklerinin ileride oluşacak bir çökmeye rağmen kalıcı olmasını✓
Açıklama:Durability, commit edilmiş verinin elektrik kesintisi veya çökmede bile kaybolmamasıdır — motorlar bunu, commit'i onaylamadan önce write-ahead log'u kalıcı diske yazarak sağlar. (c) Atomicity'yi, (a) ve (b) ise Isolation'ın yönlerini tarif eder.
Transactions IsolationZorluk 2
ACID'deki Isolation özelliği temel olarak neyi ele alır?
- aEşzamanlı transaction'ların birbirlerinin yarım işlerini görmesini engellemeyi✓
- bElektrik kesintisinden sonra zaten commit edilmiş veriyi kurtarmayı
- cHer satırı CHECK ve foreign-key kısıtlarına karşı doğrulamayı
- dBüyük bir transaction'ı kendi başına commit eden küçük parçalara bölmeyi
Açıklama:Isolation, eşzamanlı transaction'ların birbirine karışmasını nasıl önlediğini yönetir — ideal olarak her biri tek başına çalışıyormuş gibi davranır. Commit edilmiş veriyi kurtarmak (b) Durability'dir, kısıt doğrulaması (c) Consistency'ye aittir; (d) ise isolation'ı tarif etmek yerine atomicity ile çelişir.
Transactions IsolationZorluk 2
ACID'de Consistency özelliği, bir transaction'ın şunu yaptığı anlamına gelir:
- a...her zaman başka herhangi bir açık session'ın yazdığı en son commit edilmiş değeri okur
- b...tüm lock'larını diğer her transaction bitene kadar tutar
- c...veritabanını, kısıtlarını koruyarak geçerli bir durumdan başka geçerli bir duruma taşır✓
- d...daha az sayıda başka transaction aktifken daha hızlı çalışır
Açıklama:Consistency, commit edilen her transaction'ın veritabanını tüm kurallarını (constraint, cascade, trigger) sağlar halde bırakması demektir — asla geçersiz bir duruma düşmez. (a) okuma görünürlüğünü (bir isolation konusu) tarif eder; (b) ve (d) ise ACID Consistency garantisiyle ilgisizdir.
Transactions IsolationZorluk 1
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
ROLLBACK;
Bu çalıştıktan sonra 1 numaralı hesabın balance'ı ne olur?
- a100 azalmıştır — UPDATE zaten yeni değeri satıra yazdı
- bDeğişmez — ROLLBACK, transaction içinde yapılan UPDATE'i geri alır✓
- cSonradan bir COMMIT verilip üzerine yazılana kadar 100 azalmıştır
- dNULL olur — ROLLBACK, transaction'ın dokunduğu her kolonu temizler
Açıklama:ROLLBACK, BEGIN'den beri yapılan tüm değişiklikleri atar; balance sanki UPDATE hiç olmamış gibi transaction öncesi değerine döner. UPDATE'in etkisi yalnızca açık transaction içinde görünürdü (a yanlış) ve rollback kolonları NULL yapmaz, eski değerleri geri getirir (d yanlış).
Transactions IsolationZorluk 2
Bir sipariş oluşturma rutini orders'a bir satır, order_items'a bir satır ekliyor, ardından products.stock'u azaltıyor. Bu üç statement neden tek bir transaction içinde çalışmalı?
- aYarıda kalan bir hata, siparişi kalemsiz ya da stoğu yanlış bırakamasın diye✓
- bHer statement başarılı olana kadar otomatik olarak yeniden denensin diye
- cÜç statement paralel çalışıp daha hızlı bitsin diye
- dÜç statement commit'e kadar foreign-key ve CHECK kısıtlarını atlayabilsin diye
Açıklama:Üç yazmayı tek transaction'a sarmak onları atomik yapar: herhangi bir adım başarısız olursa hepsi rollback edilir, böylece kalemsiz bir sipariş ya da güncellenmemiş bir stok değeri asla kalıcı olmaz. Transaction otomatik retry eklemez (b), statement'ları paralelleştirmez (c) ve kısıtları devre dışı bırakmaz (d).