Operaciones DML y Concurrencia en Bases de Datos Transaccionales
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 3,53 KB
Operaciones DML (Data Manipulation Language)
- INSERT: Permite añadir una o varias filas a una tabla. Requiere el permiso
INSERT
sobre la tabla. - UPDATE: Permite modificar uno o varios datos (columnas) de una o varias filas ya existentes en una tabla. Requiere el permiso
UPDATE
sobre la tabla. - DELETE: Para borrar filas de una tabla se usa la sentencia
DELETE
. Si no se indica ninguna condición, se borran todas las filas de la tabla. Si se indica una condición, solo se borran las que la cumplan. Necesita el permisoDELETE
sobre la tabla.
Cambios en una Base de Datos Transaccional
El DML lo forman las sentencias SELECT
, INSERT
, UPDATE
y DELETE
. La sentencia SELECT
no hace cambios en los datos de la BD (solo lee). Pero cuando utilizamos las sentencias INSERT
, UPDATE
y DELETE
estamos realizando cambios en los datos almacenados en la BD.
Hacer Definitivos (COMMIT) / Deshacer (ROLLBACK) los Cambios
- Confirmar los cambios:
COMMIT [WORK];
- Deshacer cambios:
ROLLBACK [WORK] [TO punto_restauración];
- Define un punto de restauración:
SAVEPOINT punto_restauración;
SET AUTOCOMMIT ON | OFF
permite que en una sesión, cada sentencia DML haga automáticamente unCOMMIT
. Por defecto está aOFF
. Peligroso aON
.SHOW AUTOCOMMIT;
muestra el estado de autocommit.
Concurrencia
Un SGBD soporta los trabajos de muchos usuarios a la vez (de manera simultánea o concurrente). Cada trabajo de un usuario se denomina transacción. Cuando varios trabajos manipulan los mismos recursos hay que solucionar ciertos problemas que aparecen al compartir estos recursos.
Estrategias para la Concurrencia
- PRIMERA: SERIALIZAR TRABAJOS: Un trabajo no comienza hasta que acabe el anterior. Se hace un trabajo tras otro, de uno en uno, en fila, en serie.
- SEGUNDA: CONCURRENCIA MÁXIMA: Todos los trabajos se ejecutan simultáneamente sin restricciones, un trabajo accede a los cambios que esté haciendo otro en cualquier momento.
Nivel de Aislamiento entre Transacciones
El estándar ANSI/ISO SQL define 3 tipos de interacciones peligrosas que 2 transacciones llamadas TA y TB pueden tener:
- Dirty reads (lecturas sucias): TA lee cambios no confirmados por TB. Más tarde TB deshace los cambios. TA se queda manipulando información inexistente.
- Unrepeatable reads (lecturas no repetibles): Si TA necesita leer los datos al menos 2 veces, los lee la primera vez y mientras TB hace updates y commit. TA vuelve a intentar leerlos por segunda vez y ya no le coinciden.
- Phantom reads (lecturas fantasma): TA lee datos. TB inserta o borra filas y hace commit. TA repite la lectura de los datos y tiene nuevas filas y otras que se han evaporado.