Control de concurrencia
La concurrencia en las base de datos es de suprema importancia en los sistemas de información ya que evita errores en el momento de ejecutar las diferentes transacciones. En si la concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo y que potencialmente puedan interactuan entre si.
BLOQUEOS COMPARTIDOS
Los bloqueos compartidos permiten que varias transacciones simultáneas lean (SELECT) un recurso en situaciones de control de simultaneidad pesimista.
Ninguna otra transacción podrá modificar los datos mientras el bloqueo compartido exista en el recurso.Los bloqueos compartidos en un recurso se liberan tan pronto como finaliza la operación de lectura, amenos que se haya establecido el nivel de aislamiento de la transacción como REPEATABLE READ o más alto, o bien se utilice una sugerencia de bloqueo para mantener los bloqueos compartidos durante la transacción.
BLOQUEOS EXCLUSIVOS
Los bloqueos exclusivos evitan que transacciones simultáneas tengan acceso a un recurso. Al utilizar un bloqueo exclusivo, el resto de las transacciones no pueden modificar los datos; las operaciones de lectura sólo se pueden realizar si se utiliza la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada.Las instrucciones para modificar datos, como INSERT, UPDATE y DELETE combinan las operaciones de modificación con las de lectura. En primer lugar, la instrucción lleva a cabo operaciones de lectura para adquirir los datos antes de proceder a ejecutar las operaciones de modificación necesarias. Por tanto, las instrucciones de modificación de datos suelen solicitar bloqueos compartidos y exclusivos. Por ejemplo, una instrucción UPDATE puede modificar las filas de una tabla a partir de una combinación con otra tabla. En este caso, la instrucción UPDATE solicita bloqueos compartidos para la filas leídas en la tabla de combinación, además de bloqueos exclusivos para las filas actualizadas.
MARCAS DE TIEMPO
•En lugar de determinar el orden entre las transacciones en conflicto en función del momento del acceso a los elementos, determinan por adelantado una ordenación de las transacciones.
•El interbloqueo es imposible.
•Una marca de tiempo es un identificador único asociado a cada transacción.
•Las actualizaciones físicas se retrasan hasta la confirmación de las transacciones. No se puede actualizar ningún.
•Protocolos:
–Wait-die: que fuerza a una transacción a esperar en caso de que entre en conflicto con otra transacción cuya marca de tiempo sea mas reciente, o a morir (abortar y reiniciar) si la transacción que se esta ejecutando es más antigua.
–Wound-wait: que permite a una transacción matar a otra que posea una marca de tiempo más reciente, o que fuerza a la transacción peticionaria a esperar.
•Marcas de tiempo multiversión
–Varias transacciones leen y escriben diferentes versiones del mismo dato siempre que cada transacción sea un conjunto consistente de versiones de todos los datos a los que accede.
Control de concurrencia optimista
Los algoritmos de control de concurrencia discutidos antes son por naturaleza pesimistas. En otras palabras, ellos asumen que los conflictos entre transacciones son muy frecuentes y no permiten el acceso a un dato si existe una transacción conflictiva que accesa el mismo dato. Así, la ejecución de cualquier operación de una transacción sigue la secuencia de fases: validación (V), lectura (R), cómputo(C) y escritura (W) . Los algoritmos optimistas, por otra parte, retrasan la fase de validación justo antes de la fase de escritura . De esta manera, una operación sometida a un despachador optimista nunca es retrasada.Las operaciones de lectura, cómputo y escrita de cada transacción se procesan libremente sin actualizar la base de datos corriente. Cada transacción inicialmente hace sus cambios en copias locales de los datos. La fase de validación consiste en verificar si esas actualizaciones conservan la consistencia de la base de datos. Si la respuesta es positiva, los cambios se hacen globales (escritos en la base de datos corriente). De otra manera, la transacción es abortada y tiene que reiniciar.
BLOQUEOS COMPARTIDOS
Los bloqueos compartidos permiten que varias transacciones simultáneas lean (SELECT) un recurso en situaciones de control de simultaneidad pesimista.
Ninguna otra transacción podrá modificar los datos mientras el bloqueo compartido exista en el recurso.Los bloqueos compartidos en un recurso se liberan tan pronto como finaliza la operación de lectura, amenos que se haya establecido el nivel de aislamiento de la transacción como REPEATABLE READ o más alto, o bien se utilice una sugerencia de bloqueo para mantener los bloqueos compartidos durante la transacción.
BLOQUEOS EXCLUSIVOS
Los bloqueos exclusivos evitan que transacciones simultáneas tengan acceso a un recurso. Al utilizar un bloqueo exclusivo, el resto de las transacciones no pueden modificar los datos; las operaciones de lectura sólo se pueden realizar si se utiliza la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada.Las instrucciones para modificar datos, como INSERT, UPDATE y DELETE combinan las operaciones de modificación con las de lectura. En primer lugar, la instrucción lleva a cabo operaciones de lectura para adquirir los datos antes de proceder a ejecutar las operaciones de modificación necesarias. Por tanto, las instrucciones de modificación de datos suelen solicitar bloqueos compartidos y exclusivos. Por ejemplo, una instrucción UPDATE puede modificar las filas de una tabla a partir de una combinación con otra tabla. En este caso, la instrucción UPDATE solicita bloqueos compartidos para la filas leídas en la tabla de combinación, además de bloqueos exclusivos para las filas actualizadas.
MARCAS DE TIEMPO
•En lugar de determinar el orden entre las transacciones en conflicto en función del momento del acceso a los elementos, determinan por adelantado una ordenación de las transacciones.
•El interbloqueo es imposible.
•Una marca de tiempo es un identificador único asociado a cada transacción.
•Las actualizaciones físicas se retrasan hasta la confirmación de las transacciones. No se puede actualizar ningún.
•Protocolos:
–Wait-die: que fuerza a una transacción a esperar en caso de que entre en conflicto con otra transacción cuya marca de tiempo sea mas reciente, o a morir (abortar y reiniciar) si la transacción que se esta ejecutando es más antigua.
–Wound-wait: que permite a una transacción matar a otra que posea una marca de tiempo más reciente, o que fuerza a la transacción peticionaria a esperar.
•Marcas de tiempo multiversión
–Varias transacciones leen y escriben diferentes versiones del mismo dato siempre que cada transacción sea un conjunto consistente de versiones de todos los datos a los que accede.
Control de concurrencia optimista
Los algoritmos de control de concurrencia discutidos antes son por naturaleza pesimistas. En otras palabras, ellos asumen que los conflictos entre transacciones son muy frecuentes y no permiten el acceso a un dato si existe una transacción conflictiva que accesa el mismo dato. Así, la ejecución de cualquier operación de una transacción sigue la secuencia de fases: validación (V), lectura (R), cómputo(C) y escritura (W) . Los algoritmos optimistas, por otra parte, retrasan la fase de validación justo antes de la fase de escritura . De esta manera, una operación sometida a un despachador optimista nunca es retrasada.Las operaciones de lectura, cómputo y escrita de cada transacción se procesan libremente sin actualizar la base de datos corriente. Cada transacción inicialmente hace sus cambios en copias locales de los datos. La fase de validación consiste en verificar si esas actualizaciones conservan la consistencia de la base de datos. Si la respuesta es positiva, los cambios se hacen globales (escritos en la base de datos corriente). De otra manera, la transacción es abortada y tiene que reiniciar.
No hay comentarios:
Publicar un comentario