2011-03-03 14 views
7

He localizado muchos recursos en la web que brindan descripciones generales de los conceptos MVCC (control de concurrencia de varias versiones), pero no referencias técnicas detalladas sobre exactamente cómo debería funcionar o implementarse. ¿Hay algún documento en línea, o libros fuera de línea, que contenga suficiente teoría (y un poco de ayuda práctica, idealmente) sobre la cual basar una implementación? Deseo emular más o menos lo que PostgreSQL hace.¿Cómo implemento MVCC?

(Para más información lo implementaré en SAS usando SAS/Share, que proporciona algunas primitivas de bloqueo y acceso concurrente de lectura/escritura al almacén de datos subyacente, pero nada en el camino de aislamiento de transacciones o funciones adecuadas de DBMS. cualquiera está familiarizado con SAS/Share y piensa que es una tarea imposible, ¡por favor grite!)

+0

¿Hay algún motivo por el que desee utilizar SAS/SHARE antes que, digamos, un RDBMS? – sasfrog

+0

Gerentes de departamento/proyecto de TI de la edad de piedra que tienen opiniones interesantes sobre el concepto de usar la herramienta adecuada para el trabajo. – jl6

+0

Wow. ¿Y a ellos no les importa que estés cincelando un objeto plano y llano en un campo rodeado de comerciantes de ruedas? – sasfrog

Respuesta

1

escribí un post sobre how MVCC works in PostgreSQL. Básicamente, una tabla en PostgreSQL puede dañar varias versiones de la misma fila.

Más, hay dos columnas adicionales:

  • tmin - marcando el ID de transacción que inserta la fila
  • tmax - marcando el ID de transacción que suprime la fila

La actualización se hecho al eliminar e insertar un nuevo registro, y el proceso VACUUM recopila las versiones anteriores que ya no se usan.

Cuestiones relacionadas