Вся предоставленная на этом сервере информация собрана нами из разных источников. Если Вам кажется, что публикация каких-то документов нарушает чьи-либо авторские права, сообщите нам об этом.
Multi-Version Concurrency Control
(MVCC)
is an advanced technique for improving database performance in a
multi-user environment.
Vadim Mikheev provided
the implementation for Postgres.
Unlike most other database systems which use locks for concurrency control,
Postgres
maintains data consistency by using a multiversion model.
This means that while querying a database each transaction sees
a snapshot of data (a database version)
as it was some
time ago, regardless of the current state of the underlying data.
This protects the transaction from viewing inconsistent data that
could be caused by (other) concurrent transaction updates on the same
data rows, providing transaction isolation
for each database session.
The main difference between multiversion and lock models is that
in MVCC locks acquired for querying (reading) data don't conflict
with locks acquired for writing data and so reading never blocks
writing and writing never blocks reading.