⚡ÖZET VE TEKNİK CEVAP
İlişkisel veritabanları eşzamanlı işlemlerde ACID izolasyon seviyelerini (Serializable, Repeatable Read) garanti etmek zorundadır. Geleneksel Katı İki Aşamalı Kilitleme (2PL / kötümser eşzamanlılık), okumalar için paylaşımlı kilit (S-lock), yazmalar için özel kilit (X-lock) koyar: Okuyanlar yazanları, yazanlar da okuyanları kilitler. Yoğun okuma yapılan bir sistemde uzun süren bir raporlama sorgusu tüm canlı müşteri güncellemelerini kilitler. Modern veritabanları (PostgreSQL, MySQL InnoDB, CockroachDB) 2PL yerine Çoklu Sürüm Eşzamanlılık Kontrolü (MVCC) kullanır: Bir satır güncellendiğinde satırın üzerine yazılmaz; işlem zaman damgasıyla (xmin/xmax) yeni bir sürümü oluşturulur. Okuyucular hiçbir kilit almadan kendi geçmiş anlık görüntülerini (snapshot) okur; böylece 'Okuyanlar Yazanları, Yazanlar da Okuyanları Asla Engellemez'.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
2PL kullanan bir bankacılık sistemi, ay sonu raporlaması sırasında kilitleniyordu çünkü 20 dakika süren bir analitik sorgu hesap tablosunu kilitliyor ve tüm ATM para çekme işlemleri zaman aşımına uğruyordu. MVCC ve Snapshot Isolation kullanan PostgreSQL'e geçildiğinde, 20 dakikalık rapor sorgusu tek bir kilit bile almadan kendi geçmiş anlık görüntüsünü okudu; bu sırada saniyede 5.000 ATM para çekme işlemi sıfır gecikmeyle çalışmaya devam etti.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaÇoklu Sürüm Eşzamanlılık Kontrolünün (MVCC) temel altın kuralı nedir?
PostgreSQL'de bir uygulama bir işlemi saatlerce 'idle in transaction' durumunda açık bırakırsa ne olur?
Katı İki Aşamalı Kilitleme (2PL) ile Çoklu Sürüm Eşzamanlılık Kontrolü (MVCC) — Sıkça Sorulan Sorular
Anlık Görüntü İzolasyonunda (Snapshot Isolation) 'Write Skew' hatası nedir?
İki eşzamanlı işlemin aynı veriyi okuyup, birbirlerinin yazdığı farklı satırlardan habersiz olarak global bir iş kuralını ihlal eden çelişkili yazmalar yapmasıdır.
Serializable Snapshot Isolation (SSI) 2PL kilitleri olmadan Write Skew hatasını nasıl engeller?
Bellekte okuma-yazma bağımlılık grafiklerini takip ederek ve döngüsel bir çakışma tespit edildiğinde çakışan işlemlerden birini otomatik iptal ederek (abort).
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
2PL enforces serializability via locks: readers block writers, writers block readers.
- ▸
MVCC stores immutable row versions, allowing non-blocking concurrent reads and writes.
- ▸
Uncommitted long-running transactions block Vacuum GC, causing catastrophic table bloat.
- ▸
Set
idle_in_transaction_session_timeoutto kill abandoned transactions automatically.
Yaygın Yanılgılar
- ✗
Yanılgı: Snapshot Isolation prevents all concurrency anomalies (Gerçek: Snapshot Isolation is susceptible to Write Skew; SSI is required for true serializability).
- ✗
Yanılgı: Updating a row in PostgreSQL modifies the disk block in-place (Gerçek: It writes a new row version and updates index pointers).
Karar Kılavuzu & Önceliklendirme
Always configure idle_in_transaction_session_timeout (e.g. 60 seconds) in PostgreSQL. Monitor n_dead_tup metrics and tune autovacuum_vacuum_cost_limit for write-heavy tables.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL_DOCUMENTATION]PostgreSQL Documentation: Concurrency Control & MVCC Internals— The PostgreSQL Global Development Group
