Principy řízení souběžnosti s více verzemi (MVCC) a snímků
Většina systémů pro správu databází (DBMS) používá zámky k vynucení řízení souběžnosti, ale PostgreSQL doplňuje uzamčení alternativním přístupem. PostgreSQL používá systém s názvem Multi-Version Concurrency Control (MVCC), který umožňuje existenci více verzí stejného řádku, aby se zlepšila souběžnost. V tomto systému každý dotaz vidí předchozí snímek dat, která jsou konakčně konzistentní. MVCC zajišťuje, že transakce, která čte data, neblokuje transakci, která zapisuje data a naopak.
Například Připojení ion A provádí dotaz, který prohledá všechny řádky tabulky. Současně Připojení ion B provádí dotaz, který aktualizuje některé řádky. MVCC umožňuje spuštění obou dotazů současně vytvořením jiné verze ovlivněných řádků. Tímto způsobem může Připojení ion B provádět aktualizace, aniž by to mělo vliv na Připojení ion A. Tento proces je dosaženo každý řádek verze má xmin hodnotu pro viditelné od transakce a xmax hodnotu pro viditelné do transakce. V případě MVCC Připojení ion A bude ignorovat všechny změny, ke kterým došlo po spuštění dotazu Připojení ion A.
Transakce
Transakce v DBMS jsou atomická jednotka práce, a proto transakce buď potvrdí v plném rozsahu, nebo vůbec. Transakce se také používají pro účely souběžnosti. U úrovní izolace lze definovat účinek, který může mít jedna transakce na jiné, souběžné transakce.
Transakci zahájíte pomocí BEGIN TRANSACTION nebo START TRANSACTION. Dokončíte transakci s potvrzením, chcete-li uložit všechny změny provedené v transakci nebo vrácení zpět zpět všechny změny provedené transakcí. Příklad:
BEGIN TRANSACTION;
UPDATE production.workorder
SET stockedqty=7
WHERE workorderid=1;
COMMIT;