MVCC (Multi Version Concurrent Control), veri tabanına eşzamanlı erişim sağlamak için veritabanı yönetim sistemleri tarafından kullanılan eşzamanlılık kontrol yöntemidir, yani MVCC postgresql veri tabanında eş zamanlı olarak okuma ve yazma işlemlerinin sorunsuz yapılabilmesi adına geliştirilen bir modeldir. Aslında amaç basit veritabanında read yapanlar write yapanları engeleyemesin, yazma yapanlarda okuma yapanları engeleyemesin.  Bu teknik Postgres’e özgü değildir Oracle, Berkeley DB, CouchDB vb veritabanları bir tür MVCC’yi uygularlar.

Eşzamanlılık kontrolü olmadan, bir transaction yazarken aynı anda başka bir transaction veriyi okursa, okuyucunun yarı yazılı veya tutarsız bir veri parçası görmesi mümkündür. Örneğin, iki banka hesabı arasında bir banka havalesi yaparken, bir okuyucu, para orijinal hesaptan çekildiğinde ve hedef hesaba yatırılmadan önce bankadaki total bakiyeyi okursa, paranın hesaptan kaybolduğunu düşünür.

İzolasyon, verilere eşzamanlı erişimlerde garantiler sağlayan özelliktir. İzolasyon, eşzamanlılık kontrol protokolü aracılığıyla gerçekleştirilir. İzolosyanu sağlamanın en basit yoluRead/Write locks, Two-Phase Locking gibi lock mekanizmalarıdır ancak lock contentiona(çekişme) neden olur ve contention ölçeklenebilirliği etkiler. Bu nedenle, veritabanı araştırmacıları, locklamayı minimuma indirmeye çalışan farklı bir Eşzamanlılık Kontrolü modeli geliştirdiler, böylece:

  • Read yapanlar, write yapanları engellemez
  • Write yapanlar read yapanları engellemez

(continue reading…)

Loading