Middle
¿Qué tipos de bloqueos existen en SQL?
sobes.tech AI
Respuesta de la IA
Tipos de bloqueos en SQL:
-
Por nivel:
- Bloqueo de tablas (Table Locks): Bloquea toda la tabla. Es fácil de implementar, pero puede reducir significativamente el paralelismo. Es adecuado para operaciones que modifican toda la tabla (por ejemplo,
ALTER TABLE). - Bloqueo de filas (Row Locks): Bloquea filas individuales. Proporciona alto paralelismo, pero requiere más recursos para gestionar. Se usa por defecto en la mayoría de los SGBD para
INSERT,UPDATE,DELETE.
- Bloqueo de tablas (Table Locks): Bloquea toda la tabla. Es fácil de implementar, pero puede reducir significativamente el paralelismo. Es adecuado para operaciones que modifican toda la tabla (por ejemplo,
-
Por tipo de acceso:
- Bloqueo compartido (Shared Lock - S Lock): Permite que varias transacciones lean datos simultáneamente, pero impide que otras escriban.
- Bloqueo exclusivo (Exclusive Lock - X Lock): Permite que solo una transacción acceda a los datos (tanto para leer como para escribir) y bloquea a otras transacciones.
- Bloqueo de intención (Intention Lock): Indica al SGBD que las transacciones planean establecer un bloqueo en un nivel inferior (filas o tablas). Por ejemplo,
IS(Intention Shared),IX(Intention Exclusive). Ayuda a que el SGBD verifique rápidamente la compatibilidad de los bloqueos.
-
Otros tipos:
- Bloqueo de rango (Range Lock): Bloquea un rango de filas en un índice. Se usa para prevenir lecturas fantasma.
- Bloqueo de metadatos (Metadata Lock): Bloquea los metadatos del objeto (tabla, vista, etc.). Se usa al realizar operaciones DDL.
La compatibilidad de bloqueos determina si varias transacciones pueden mantener simultáneamente ciertos tipos de bloqueos en un mismo objeto.
| Tipo de bloqueo | S | X | IS | IX |
|---|---|---|---|---|
| S | Sí | No | Sí | No |
| X | No | No | No | No |
| IS | Sí | No | Sí | Sí |
| IX | No | No | Sí | Sí |