0Pricing
SQL Academy · Ders

Yalıtım Düzeyleri: READ COMMITTED, REPEATABLE READ, SERIALIZABLE

SQL standardındaki yalıtım düzeylerini ve PostgreSQL uygulamasını karşılaştırın; iş yükünüz için doğru düzeyi seçin.

Yalıtım Düzeyleri: READ COMMITTED, REPEATABLE READ, SERIALIZABLE, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Dört Standart Düzey

SQL standardı dört yalıtım düzeyi tanımlar:

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

PostgreSQL bunların üçünü uygular (READ UNCOMMITTED, READ COMMITTED gibi davranır).

READ COMMITTED (PostgreSQL Varsayılanı)

Her ifade, ifadenin başlamasından önce kesinleştirilmiş verileri görür. Tek bir işlem içinde farklı anlık görüntüler görebilirsiniz.

-- Inside one transaction:
SELECT balance FROM accounts WHERE id = 1;  -- 100
-- meanwhile another tx commits balance=200
SELECT balance FROM accounts WHERE id = 1;  -- 200  (non-repeatable read)

REPEATABLE READ (Anlık Görüntü Yalıtımı)

İşlemin başında alınan anlık görüntüyü görür. Aynı satırı yeniden okumak her zaman aynı değeri döndürür. PostgreSQL'in REPEATABLE READ düzeyi hayalet okumaları da önler.

BEGIN ISOLATION LEVEL REPEATABLE READ;
SELECT balance FROM accounts WHERE id = 1;  -- 100
-- another tx commits balance=200
SELECT balance FROM accounts WHERE id = 1;  -- still 100
COMMIT;

SERIALIZABLE

En güçlü düzeydir: işlemler art arda çalıştırılmış gibi davranır. PostgreSQL, Serileştirilebilir Anlık Görüntü Yalıtımı (SSI) kullanır — eşzamanlı bağımlılıkları saptar ve çakışan işlemleri iptal eder:

BEGIN ISOLATION LEVEL SERIALIZABLE;
...
COMMIT;
-- ERROR: could not serialize access due to read/write dependencies

Yalıtım Düzeyini Ayarlama

İşlem başına, oturum başına veya genel olarak:

-- Per transaction:
BEGIN ISOLATION LEVEL SERIALIZABLE;

-- Per session:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

-- Default for new transactions in this session:
SET default_transaction_isolation = 'repeatable read';

-- Global default in postgresql.conf:
-- default_transaction_isolation = 'read committed'

Her Düzeyin İzin Verdiği Anomaliler

DüzeyKirliTekrarlanamayanHayalet
READ UNCOMMITTEDolabilirolabilirolabilir
READ COMMITTEDhayırolabilirolabilir
REPEATABLE READhayırhayırhayır (PG'de)
SERIALIZABLEhayırhayırhayır

Performans Ödünleşimleri

  • READ COMMITTED — en düşük ek yük, varsayılan
  • REPEATABLE READ — aynı plan, anlık görüntü tutarlılığı; yazma çakışmaları olmadıkça performans kaybı yok
  • SERIALIZABLE — ek kayıt tutma işlemi yapılır, işlemler iptal edilebilir; uygulamada yeniden deneme mantığı gerekir

SERIALIZABLE Yeniden Deneme Deseni

SERIALIZABLE, 40001 koduyla işlemi iptal edebilir. Bir döngü içinde yeniden deneyin:

for (let i = 0; i < 3; i++) {
  try {
    await client.query('BEGIN ISOLATION LEVEL SERIALIZABLE');
    // ... work ...
    await client.query('COMMIT');
    break;
  } catch (e) {
    if (e.code === '40001') continue;
    throw e;
  }
}

Tutarlı Bir Anlık Görüntüyü Okuma

Tutarlı verilere ihtiyaç duyan uzun süren analitik sorgular için REPEATABLE READ doğru dengedir.

Yazma Çakışması Davranışı

İki işlem aynı satırı değiştirirse:

  • READ COMMITTED — ikincisi bekler, ardından yeni satırı yeniden okur ve tekrar dener
  • REPEATABLE READ — ikincisi "serileştirilemedi" hatasıyla iptal edilir — uygulama yeniden denemelidir

Doğru Düzeyi Seçme

Genel kurallar:

  • OLTP — READ COMMITTED (varsayılan)
  • Tutarlılık gerektiren raporlar — REPEATABLE READ
  • Para / stok — SERIALIZABLE + yeniden deneme veya açık kilitler (FOR UPDATE)

Açık Kilitler Bazen Yalıtımdan Daha İyidir

Tek bir yoğun erişilen satır için READ COMMITTED üzerinde genellikle SELECT ... FOR UPDATE kullanmak SERIALIZABLE kullanmaktan daha basittir.

Özet

Yalıtım düzeyleri güvenliği eşzamanlılık karşılığında sunar.

  • READ COMMITTED varsayılandır
  • Tutarlı okumalar için REPEATABLE READ
  • "Seriymiş gibi" davranış için SERIALIZABLE — yeniden deneme mantığı gerekir

Hızlı Kontrol

PostgreSQL'in varsayılan yalıtım düzeyi hangisidir?

Sıkça Sorulan Sorular

“Yalıtım Düzeyleri: READ COMMITTED, REPEATABLE READ, SERIALIZABLE” dersi ücretsiz mi?

Evet — “Yalıtım Düzeyleri: READ COMMITTED, REPEATABLE READ, SERIALIZABLE” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“Yalıtım Düzeyleri: READ COMMITTED, REPEATABLE READ, SERIALIZABLE” dersinde ne öğreneceğim?

SQL standardındaki yalıtım düzeylerini ve PostgreSQL uygulamasını karşılaştırın; iş yükünüz için doğru düzeyi seçin. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Yalıtım Düzeyleri: READ COMMITTED, REPEATABLE READ, SERIALIZABLE” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. ACID Özellikleri ve Anormallikler
  2. Yalıtım Düzeyleri: READ COMMITTED, REPEATABLE READ, SERIALIZABLE
  3. Kilitlenmeler: Tespit ve Önleme
  4. İyimser ve Kötümser Kilitleme
← SQL Academy Sayfasına Dön