Gestión de Transacciones y Concurrencia en Bases de Datos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,37 KB

Sentencias DML para la Manipulación de Datos

Insert: Permite añadir una o varias filas a una tabla. Es necesario tener el permiso insert sobre la tabla.

Update: Permite modificar uno o varios datos (columnas) de una o varias filas ya existentes en una tabla. Es necesario tener el permiso update sobre la tabla.

Delete: Para borrar filas de una tabla, se utiliza 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 filas que la cumplan. Se necesita el permiso delete sobre la tabla.

Cambios en una Base de Datos Transaccional

El Lenguaje de Manipulación de Datos (DML) está formado por las sentencias select, insert, update y delete. La sentencia select no realiza cambios en los datos de la base de datos (solo lectura). Sin embargo, al utilizar las sentencias insert, update y delete, se están realizando cambios en los datos almacenados en la base de datos.

Hacer Definitivos (Commit) / Deshacer (Rollback) los Cambios

  • Confirmar los cambios: commit [WORK];
  • Deshacer cambios: rollback [WORK] [TO punto_restauración];
  • Definir un punto de restauración: savepoint punto_restauración;
  • Set Autocommit on/off: Permite que, en una sesión, cada sentencia DML realice automáticamente un commit. Por defecto, está en OFF. Es peligroso tenerlo en ON.
  • Show Autocommit: Muestra el estado de autocommit.

Concurrencia en Bases de Datos

Un Sistema de Gestión de Bases de Datos (SGBD) soporta el trabajo 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, es necesario solucionar ciertos problemas que aparecen al compartir estos recursos.

Aproximaciones a la Concurrencia

  1. Serializar Trabajos: Un trabajo no comienza hasta que finaliza el anterior. Se realiza un trabajo tras otro, de uno en uno, en serie.
  2. Concurrencia Máxima: Todos los trabajos se ejecutan simultáneamente sin restricciones. Un trabajo accede a los cambios que esté realizando otro en cualquier momento.

Nivel de Aislamiento entre Transacciones

El estándar ANSI/ISO SQL define tres tipos de interacciones peligrosas que dos 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 dos veces, los lee la primera vez mientras TB realiza actualizaciones (updates) y confirmaciones (commit). Cuando TA intenta leerlos por segunda vez, los datos ya no coinciden.
  • Phantom Reads (Lecturas Fantasma): TA lee datos. TB inserta o borra filas y realiza un commit. TA repite la lectura de los datos y encuentra nuevas filas, mientras que otras han desaparecido.

Entradas relacionadas: