El control de concurrencia mediante versiones múltiples (Multiversion concurrency control o MVCC) es un método para control de acceso generalmente usado por SGBDs para proporcionar acceso concurrente a los datos, y en lenguajes de programación para implementar concurrencia.
Se evita así al sistema gestor de la base de datos dedicar tiempo a rellenar huecos en memoria o disco, al precio de tener que recorrer periódicamente la memoria o el disco para eliminar dichos objetos obsoletos.
Las escrituras afectan a futuras versiones, pero el ID de transacción en curso garantiza la consistencia ya que las escrituras posteriores se contemplarán más tarde.
Cada versión tiene asociada su marca de tiempo de escritura por el que permite leer a una transacción hecha en el momento ti los objetos más recientes que la preceden.
El método MVCC está particularmente adaptado a la toma de instantáneas aisladas, algo que otros métodos de concurrencia no lo hacen bien o a un coste muy alto.
El artículo de Bernstein y Goodman cita una disertación[2] de 1978 por David P. Reed que describe claramente MVCC y la reclama como original.