Ana içeriğe geç
Kesit SQL
İleri · Veritabanı İç Yapısı

ACID, izolasyon seviyeleri ve eşzamanlılık

Dirty read, phantom read, kilitler ve MVCC.

Uygulamada aç, 4 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

ACID

HarfÖzellikAnlamı
AAtomicity (bölünmezlik)Ya hep ya hiç.
CConsistency (tutarlılık)İşlem kısıtları ihlal etmeden bir geçerli durumdan diğerine geçirir.
IIsolation (yalıtım)Eşzamanlı işlemler birbirini bozmaz.
DDurability (kalıcılık)COMMIT edilen veri çökmeden sonra da durur (WAL/redo log).

Eşzamanlılık sorunları

İzolasyon seviyeleri (SQL standardı)

SeviyeDirtyNon-repeatablePhantom
READ UNCOMMITTEDOlabilirOlabilirOlabilir
READ COMMITTED (PostgreSQL, SQL Server varsayılanı)YokOlabilirOlabilir
REPEATABLE READ (MySQL InnoDB varsayılanı)YokYokOlabilir*
SERIALIZABLEYokYokYok

* PostgreSQL ve InnoDB'de pratikte büyük ölçüde engellenir.

Kilitler ve MVCC

Klasik yaklaşım satır/tablo kilitleridir; okuyucu yazarı, yazar okuyucuyu bekler. Modern veritabanları (PostgreSQL, Oracle, InnoDB) MVCC (Multi-Version Concurrency Control) kullanır: Her işlem verinin bir anlık görüntüsünü görür, okuyucular yazarları engellemez. Bedeli: eski sürümlerin temizlenmesi (PostgreSQL'de VACUUM).

Deadlock: İki işlem birbirinin kilidini bekler. Veritabanı birini kurban seçip geri alır. Önlem: tablolara/satırlara hep aynı sırayla eriş, işlemleri kısa tut.

Alıştırmalara geç (4)