Çok sürümlü eşzamanlılık denetimini (MVCC) ve anlık görüntüleri anlama
Çoğu veritabanı yönetim sistemi (DBMS), eşzamanlılık denetimini zorunlu kılmak için kilitleri kullanır, ancak PostgreSQL alternatif bir yaklaşımla kilitlemeyi destekler. PostgreSQL, eşzamanlılığı geliştirmek için aynı satırın birden çok sürümünün var olmasına izin veren Çok Sürümlü Eşzamanlılık Denetimi (MVCC) adlı bir sistem kullanır. Bu sistemle, her sorgu işlem açısından tutarlı olan verilerin önceki anlık görüntüsünü görür. MVCC, verileri okuyan bir işlemin, veri yazan bir işlemi engellememesini sağlar ve bunun tersi de geçerlidir.
Örneğin, Bağlan ion A tablonun tüm satırlarını tarar bir sorgu gerçekleştirir. Aynı zamanda, Bağlan ion B bazı satırları güncelleştiren bir sorgu gerçekleştirir. MVCC, etkilenen satırların başka bir sürümünü oluşturarak her iki sorgunun da aynı anda çalışmasını sağlar. Bu şekilde, Bağlan ion B Bağlan A'yı etkilemeden güncelleştirmeleri gerçekleştirebilir. Bu işlem, her satır sürümünün işlemden bu yana görünür olan için bir xmin değerine ve işleme kadar görünür olan için bir xmax değerine sahip olmasıyla gerçekleştirilir. MVCC ile Bağlan ion A, Bağlan ion A sorgusu başlatıldıktan sonra gerçekleşen değişiklikleri yoksayar.
Hareketler
DBMS'deki işlemler atomik bir iş birimidir, bu nedenle işlem tamamen işler veya hiç işlemez. İşlemler eşzamanlılık amacıyla da kullanılır. Yalıtım düzeyleriyle, bir işlemin diğer eşzamanlı işlemler üzerindeki etkisi tanımlanabilir.
BEGIN TRANSACTION veya START TRANSACTION ile bir işlem başlatırsınız. İşlemde yapılan tüm değişiklikleri kaydetmek için COMMIT veya işlem tarafından yapılan değişiklikleri geri almak için ROLLBACK ile bir işlemi tamamlarsınız. Örneğin:
BEGIN TRANSACTION;
UPDATE production.workorder
SET stockedqty=7
WHERE workorderid=1;
COMMIT;