# Control de Concurrencia en Bases de Datos (BDD)

## Definición:

- Conjunto de técnicas y mecanismos para garantizar la consistencia y la integridad de los datos en entornos con múltiples transacciones concurrentes.

## Objetivo:

- Evitar problemas como la pérdida de actualizaciones, lecturas sucias y conflictos de escritura en operaciones concurrentes.

## Transacciones:

- Unidad lógica de trabajo que agrupa una o más operaciones de la base de datos.

## Conflictos:

- Situaciones en las que múltiples transacciones intentan acceder o modificar la misma información simultáneamente.

## Técnicas de Control:

- **Bloqueo:**

- Adquisición y liberación de bloqueos para garantizar el acceso exclusivo a los datos.

- **Versionado:**

- Mantener versiones diferentes de un mismo dato y permitir acceso simultáneo.

## Niveles de Aislamiento:

Topic principal

- Determinan la visibilidad de las transacciones concurrentes.

- *Read Uncommitted:* Permite leer datos no confirmados.

- *Read Committed:* Garantiza la lectura de datos confirmados.

- *Repeatable Read:* Evita modificaciones por otros usuarios.

- *Serializable:* La transacción se ejecuta como única en el sistema.

## Problemas Comunes:

- *Anomalías de Lectura:* Una transacción ve datos modificados por otra.

- *Anomalías de Escritura:* Múltiples transacciones modifican los mismos datos.

## Mecanismos de Resolución:

- *Deadlocks:* Dos o más transacciones bloqueadas esperando recursos que la otra posee.

- *Timeouts:* Establecer límites de tiempo para bloqueos y transacciones.

## Estrategias de Optimización:

- *Escalabilidad:* Diseño de sistemas para manejar más transacciones concurrentes.

- *Desnormalización:* Reducción de la necesidad de bloqueos duplicando datos.

## Implementación Práctica:

- *Sistemas de Gestión de Bases de Datos (SGBD):* Incluyen mecanismos internos para gestionar el control de concurrencia.