Chapter 10. Multi-Version Concurrency Control (Control de la Concurrencia Multi Versión)

Table of Contents
Introducción
Aislamiento transaccional
Nivel de lectura cursada
Nivel de aislamiento serializable
Bloqueos y tablas
Bloqueo e índices
Chequeos de consistencia de datos en el nivel de aplicación

Multi-Version Concurrency Control (MVCC) es una técnica avanzada para mejorar las prestaciones de una base de datos en un entorno multiusuario. Vadim Mikheev ha proporcionado la implementación para Postgres.

Introducción

A diferencia de la mayoría de otros sistemas de bases de datos que usan bloqueos para el control de concurrencia, Postgres mantiene la consistencia de los datos un modelo multiversión. Esto significa que mientras se consulta una base de datis, cada transacción ve una imagen de los datos (una versión de la base de datos) como si fuera tiempo atrás, sin tener en cuenta el estado actual de los datos que hay por debajo. Esto evita que la transacción vea datos inconsistentes que pueden ser causados por la actualización de otra transacción concurrente en la misma fila de datos, proporcionando aislamiento transaccional para cada sesión de la base de datos.

La principal diferencia entre multiversión y el modelo de bloqueo es que en los bloqueos MVCC derivados de una consulta (lectura) de datos no entran en conflicto con los bloqueos derivados de la escritura de datos y de este modo la lectura nunca bloquea la escritura y la escritura nunca bloquea la lectura.