Çok sürümlü eşzamanlılık denetimini (MVCC) ve anlık görüntüleri anlama

Tamamlandı

Ç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.

Özgün verileri okuyan bir okuma sorgusu ve anlık görüntüyü güncelleştiren bir yazma sorgusu gösteren Çok Sürümlü Eşzamanlılık Denetimi diyagramı.

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;