Saltar al contenido

¿Qué es el control de simultaneidad multiversión (MVCC) y quién lo admite?

Solución:

Oracle ha tenido un excelente sistema de control de múltiples versiones desde hace mucho tiempo (al menos desde Oracle 8.0)

Lo siguiente debería ayudar.

  1. El usuario A inicia una transacción y está actualizando 1000 filas con algún valor en el momento T1
  2. El usuario B lee las mismas 1000 filas en el momento T2.
  3. El usuario A actualiza la fila 543 con el valor Y (valor original X)
  4. El usuario B llega a la fila 543 y encuentra que una transacción está en operación desde el tiempo T1.
  5. La base de datos devuelve el registro sin modificar de los registros. El valor devuelto es el valor que se comprometió en ese momento menor o igual que T2.
  6. Si el registro no se pudo recuperar de los registros de rehacer, significa que la base de datos no está configurada correctamente. Debe haber más espacio asignado a los registros.
  7. De esta forma se consigue la consistencia de lectura. Los resultados devueltos son siempre los mismos con respecto a la hora de inicio de la transacción. Entonces, dentro de una transacción se logra la consistencia de lectura.

He intentado explicar en los términos más simples posibles … hay mucho de multiversión en las bases de datos.

Control de concurrencia de múltiples versiones de PostgreSQL

Además de este artículo que presenta diagramas de cómo funciona MVCC al emitir declaraciones INSERT, UPDATE y DELETE.

Los siguientes tienen una implementación de MVCC:

SQL Server 2005 (no predeterminado, SET READ_COMMITTED_SNAPSHOT ON)

  • http://msdn.microsoft.com/en-us/library/ms345124.aspx

Oracle (desde la versión 8)

MySQL 5 (solo con tablas InnoDB)

PostgreSQL

Pájaro de fuego

Informix

Estoy bastante seguro de que Sybase e IBM DB2 Mainframe / LUW no tienen una implementación de MVCC

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *