1. Glosar/

MVCC

Multi-Version Concurrency Control

MVCC (Multi-Version Concurrency Control) este modelul de concurență folosit de PostgreSQL pentru a gestiona accesul simultan la date. Fiecare UPDATE creează o nouă versiune a rândului și o marchează pe cea veche ca “moartă”; fiecare DELETE marchează rândul ca nevizibil. Citirile nu blochează scrierile și invers.

Cum funcționează #

Fiecare tranzacție vede un snapshot consistent al bazei de date din momentul începerii sale. Rândurile modificate de alte tranzacții neconfirmate sunt invizibile. Aceasta elimină nevoia de lock-uri exclusive pe citiri, permițând concurență ridicată — dar generează “gunoi” sub formă de dead tuples care trebuie curățate de VACUUM.

La ce servește #

MVCC este compromisul arhitectural al PostgreSQL: concurență ridicată fără lock-uri, la prețul de a gestiona curățarea versiunilor obsolete. Este un preț rezonabil — cu condiția ca autovacuum-ul să fie configurat corect pentru a ține pasul cu ritmul de modificare al tabelelor.

De ce contează #

Dacă VACUUM nu poate ține pasul cu rata de generare a dead tuple-urilor, tabelele se umflă (bloat), scanările secvențiale încetinesc iar indexurile devin ineficiente. Tiparul clasic: luni baza de date merge bine, vineri e un dezastru.