Posted by : Unknown
jueves, 5 de marzo de 2015
Multiversion concurrency control
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.
Aplicado a una base de datos el procedimiento consistiría en
implementar las actualizaciones de datos no borrando los datos antiguos y
sobreescribiéndolos con los nuevos, sinó marcando los antiguos como
obsoletos y añadiendo los nuevos. De ese modo habrá en algún momento más
de una versión de los mismos datos almacenada, teniendo validez sólo la
versión más reciente. 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. En el caso de una base de datos documental
esta estrategia permite optimizar los documentos escribiéndolos en
memoria contigua, evitando así tener un documento parcheado o con una
lista encadenada de sus piezas en una estructura no contigua.
MVCC también proporciona vistas consistentes en tiempo. La lectura de
transacciones en MVCC usan típicamente marca de tiempo o ID de
transacción para determinar qué estado de la base de datos leer. Las
lecturas se pueden así independizar de las escrituras a merced de la
conservación de las versiones con valores antiguos, y se evitan así los
procesos de bloqueo o de exclusión mutua. Las escrituas 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.
Dicho de otro modo, MVCC proporciona a cada usuario conectado a la
base de datos una instantánea de la misma para él sólo. Cualquier cambio
que se haga no será visible a los demás usuarios hasta que la
transacción se haya completado.