Multi Version Concurent Control

Z PostgreSQL
Verze z 7. 12. 2005, 17:10, kterou vytvořil 127.0.0.1 (diskuse)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Úkolem databázového systému je zajištění konzistence dat při současném zpracování požadavků více uživatelů. Snahou je vzájemně izolovat jednotlivé transakce - chceme, aby nepotvrzené změny dat způsobené ostatními transakcemi byly v transakci neviditelné. Nevýhodou řešení založeném na zamykání (tabulek, stránek, řádků) jsou možné vykonnostní problémy. Řešením je MVCC architektura, kdy namísto zamknutí modifikovaného řádku (ať operací Upadate nebo Delete) se provede kopie řádku - vytvoří se nová verze.

Nepotvrzené verze a přepsané verze se odstraňují až ve chvíli, kdy nejsou viditelné z žádné transakce. Neodstraňují se automaticky, je třeba spouštět příkaz VACUUM. Kromě odstranění nedostupných záznamů má příkaz VACUUM na starosti taká aktualizaci statistik používaných plánovačem dotazů, a ochranu před přetečením identifikačních čísel transakcí (stabilní záznamy obdrží id 2, tj. FrozenXID).