¿Qué es el control de concurrencia?

En la programación de gestión de datos, el control de concurrencia es un mecanismo diseñado para garantizar que las operaciones concurrentes generen resultados precisos. Esos resultados también deben obtenerse de manera oportuna. El control de concurrencia se ve muy a menudo en bases de datos donde hay un caché de información de búsqueda para que los usuarios obtengan.

Los programadores intentan diseñar una base de datos de tal manera que el efecto importante de las transacciones en los datos compartidos sea en serie equivalente. Lo que esto significa es que los datos que hacen contacto con conjuntos de transacciones estarían en un determinado estado donde los resultados se pueden obtener si todas las transacciones se ejecutan en serie y en un orden particular. A veces, esos datos no son válidos como resultado de ser modificados por dos transacciones, simultáneamente.

Hay múltiples formas de garantizar que las transacciones se ejecuten una tras otra, incluido el uso de exclusión mutua, así como la creación de un recurso que decide qué transacciones tienen acceso. Esto es excesivo, sin embargo, yNo permitirá que un programador se beneficie del control de concurrencia en un sistema distribuido. El control de concurrencia permite la ejecución simultánea de múltiples transacciones mientras mantiene estas transacciones alejadas entre sí, asegurando la linealización. Una forma de implementar el control de concurrencia es el uso de un bloqueo exclusivo en un recurso particular para ejecuciones de transacciones en serie que comparten recursos. Las transacciones bloquearán un objeto destinado a ser utilizado, y si alguna otra transacción hace una solicitud para el objeto bloqueado, esa transacción tiene que esperar a que el objeto desbloquee.

La implementación de este método en sistemas distribuidos involucra a los gerentes de bloqueo, servidores que emiten bloqueos de recursos. Esto es muy similar a los servidores para exclusiones mutuas centralizadas, donde los clientes pueden solicitar bloqueos y enviar mensajes para la liberación de bloqueos en un recurso en particular. Preservación de EXE en serieSin embargo, todavía es necesaria para el control de la concurrencia. Si dos transacciones separadas acceden a un conjunto de objetos similar, los resultados deben ser similares y como si estas transacciones se ejecutaran en un orden particular. Para garantizar el orden en el acceso a un recurso, se introduce el bloqueo de dos fases, lo que significa que las transacciones no tienen nuevas cerraduras al liberar un bloqueo separado.

En el bloqueo de dos fases para el control de la concurrencia, su fase inicial se considera la fase de crecimiento, donde la transacción adquiere su bloqueo necesario. La siguiente fase se considera una fase reducida, en la que la transacción tiene sus cerraduras liberadas. Hay problemas con este tipo de bloqueo. Si abortan las transacciones, otras transacciones pueden usar datos de objetos modificados y desbloqueados por transacciones abortadas. Esto resultaría en que se aborten otras transacciones.

OTROS IDIOMAS