PostgreSQL Transaction Kontrolleri ve Savepoint’lerin Yapısı

Bu yazıda PostgreSQL transaction kavramını detaylı şekilde inceleyeceğiz. BEGIN, COMMIT, ROLLBACK ve SAVEPOINT kullanımı ile transaction yönetimini örneklerle açıklayacağız.

Kısa özet: Transaction, birden fazla işlemin ya tamamen başarılı olması ya da tamamen geri alınmasını sağlayan veri bütünlüğü mekanizmasıdır.
PostgreSQL transaction kavramı

PostgreSQL Transaction Nedir?

Transaction, veritabanında birden fazla işlemin tek bir bütün olarak çalışmasını sağlar. Bu işlemler ya hep gerçekleşir ya da hiç gerçekleşmez (all-or-nothing).

Bu yapı veri tutarlılığını korumak için kritik öneme sahiptir.

PostgreSQL Transaction Komutları

  • BEGIN veya START TRANSACTION → Transaction başlatır
  • COMMIT → Değişiklikleri kalıcı hale getirir
  • ROLLBACK → Değişiklikleri geri alır
Önemli: PostgreSQL, çoğu sorguyu arka planda otomatik olarak transaction içinde çalıştırır.

Transaction Isolation Levels

PostgreSQL üç temel izolasyon seviyesini destekler:

  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

Bu seviyeler, transaction’ların birbirlerinin verilerini ne kadar görebileceğini belirler.

READ COMMITTED

Sadece commit edilmiş verileri görür. Dirty read’e izin vermez.

SERIALIZABLE

En katı seviyedir. Transaction’lar sanki sırayla çalışıyormuş gibi davranır.

SAVEPOINT Nedir?

Transaction içinde belirli bir noktaya işaret koymak için SAVEPOINT kullanılır. Bu sayede işlemin tamamını değil sadece bir kısmını geri alabilirsiniz.

SAVEPOINT my_savepoint;
ROLLBACK TO my_savepoint;

Bu yapı özellikle büyük transaction’larda hata yönetimini kolaylaştırır.

Transaction Örneği

BEGIN;

UPDATE maaslar 
SET alinan_maas = alinan_maas - 100.00
WHERE isim = 'A';

SAVEPOINT my_savepoint;

UPDATE maaslar 
SET alinan_maas = alinan_maas + 100.00
WHERE isim = 'B';

ROLLBACK TO my_savepoint;

UPDATE maaslar 
SET alinan_maas = alinan_maas + 100.00
WHERE isim = 'C';

COMMIT;

Bu örnekte:

  • A kişisinden para düşülür
  • B kişisine aktarım yapılır ancak hata oluşur
  • ROLLBACK ile SAVEPOINT’e dönülür
  • Para C kişisine aktarılır

Two-Phase Commit (2PC)

PostgreSQL, dağıtık sistemlerde kullanılan iki aşamalı commit (2PC) mekanizmasını destekler.

PREPARE TRANSACTION transaction_id;
COMMIT PREPARED transaction_id;
ROLLBACK PREPARED transaction_id;

Bu yapı, birden fazla veri kaynağı arasında tutarlılık sağlar.

Snapshot Kullanımı

SELECT pg_export_snapshot();
SET TRANSACTION SNAPSHOT snapshot_id;

Snapshot sayesinde aynı veri görünümü birden fazla transaction tarafından paylaşılabilir.

Sık Yapılan Hatalar

  • ROLLBACK yerine COMMIT kullanmak
  • SAVEPOINT kullanmadan büyük transaction yönetmek
  • Yanlış isolation level seçmek
  • Transaction açık bırakmak

Sonuç

PostgreSQL transaction yönetimi, veri bütünlüğü ve güvenliği açısından kritik bir konudur. BEGIN, COMMIT, ROLLBACK ve SAVEPOINT kullanımı doğru öğrenildiğinde, daha güvenli ve hatasız veritabanı işlemleri gerçekleştirilebilir.

Etiketler: postgresql transaction, savepoint, rollback, commit, database

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Database ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *