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 permiso DELETE 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 un COMMIT. Por defecto está a OFF. Peligroso a ON.
  • 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.

Entradas relacionadas: