Gestión de Transacciones en Bases de Datos: Conceptos y Tipos

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 7,55 KB

Gestión de Transacciones en Bases de Datos

Definición de Transacción

Una transacción es una colección de operaciones que forman una única unidad lógica de trabajo. Un sistema de base de datos debe asegurar que la ejecución de las transacciones se realice adecuadamente a pesar de la existencia de fallos: o se ejecuta la transacción completa o no se ejecuta. Además, debe gestionar la ejecución concurrente de las transacciones, evitando introducir inconsistencias.

Por ejemplo, en una transferencia de fondos, una transacción que calcule el saldo total del cliente podría ver el saldo de la cuenta corriente antes de que sea cargado por la transacción de la transferencia y el saldo de la cuenta de ahorros después del abono.

Una transacción se inicia por la ejecución de un programa de usuario escrito en un lenguaje de manipulación de datos de alto nivel o en un lenguaje de programación (SQL, C, C++, Java) y está delimitada por instrucciones (o llamadas a función) de la forma inicio transacción y fin transacción.

Propiedades de las Transacciones (ACID)

  • Atomicidad: O todas las operaciones de la transacción se realizan adecuadamente en la base de datos o ninguna de ellas.
  • Consistencia: La ejecución aislada de la transacción (es decir, sin otra transacción que se ejecute concurrentemente) conserva la consistencia de la base de datos.
  • Aislamiento: Aunque se ejecuten varias transacciones concurrentemente, el sistema garantiza que, para cada par de transacciones Ti y Tj, se cumple que, para los efectos de Ti, o bien Tj ha terminado su ejecución antes de que comience Ti, o bien Tj ha comenzado su ejecución después de que Ti termine. De este modo, cada transacción ignora al resto de las transacciones que se ejecuten concurrentemente en el sistema.
  • Durabilidad: Tras la finalización con éxito de una transacción, los cambios realizados en la base de datos permanecen, incluso si hay fallos en el sistema.

Estados de una Transacción

  • Activa: El estado inicial; la transacción permanece en este estado durante su ejecución.
  • Parcialmente comprometida: Después de ejecutarse la última instrucción.
  • Fallida: Tras descubrir que no puede continuar la ejecución normal.
  • Abortada: Después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción.

Transacciones en MySQL

Consideraciones Generales

  • Se debe utilizar el motor de almacenamiento InnoDB.
  • Una transacción tiene dos finales posibles: COMMIT y ROLLBACK. Por defecto, MySQL trae activado el modo autocommit, es decir, realizada una transacción (por ejemplo, un INSERT, UPDATE o DELETE), ésta es confirmada apenas es ejecutada.
  • Para desactivar el autocommit, se puede ejecutar el comando: SET AUTOCOMMIT = 0;
  • Una vez deshabilitado el autocommit, se debe utilizar obligatoriamente COMMIT para confirmar o ROLLBACK para deshacer la transacción.
  • Para deshabilitar el autocommit para una serie de comandos, se puede utilizar START TRANSACTION (sin necesidad de configurar AUTOCOMMIT en 0).
  • Al ejecutar una transacción, el motor de base de datos garantiza la atomicidad, consistencia, aislamiento y durabilidad (ACID) de la transacción (o conjunto de comandos).

Tipos de Tablas en MySQL

  • ISAM: Es el formato de almacenamiento más antiguo y podría desaparecer en futuras versiones. Presentaba limitaciones importantes, como la no exportación de ficheros entre máquinas de distintas arquitecturas o la imposibilidad de usar ficheros mayores de 4 GB.
  • MyISAM: Es el tipo de tabla por defecto en MySQL desde la versión 3.23. Optimizada para sistemas operativos de 64 bits, permite ficheros de tamaños mayores que las ISAM. Los datos se almacenan en un formato independiente, lo que permite pasar tablas entre distintas plataformas. Los índices se almacenan en un archivo con la extensión ".MYI" y los datos en otro archivo con extensión ".MYD". Ofrece la posibilidad de indexar campos BLOB y TEXT. Además, este tipo de tablas soporta el tipo de dato VARCHAR.
    • Inconvenientes de MyISAM: Corrupción de datos por eliminación del proceso mysqld durante una escritura, problemas de hardware, caídas del sistema o errores en el código MySQL o MyISAM.
  • InnoDB: Provee a MySQL con soporte para transacciones, además de un mejor bloqueo de registros para las instrucciones SELECT, similar al usado por Oracle, lo que incrementa el rendimiento y la concurrencia en ambientes multiusuario. InnoDB es el único formato en MySQL que soporta llaves foráneas (FOREIGN KEY).
    • Características de InnoDB: Recuperación automática ante fallos, integridad referencial, bloqueo a nivel de filas, SELECT sin bloqueo.

Pasos para Usar Transacciones en InnoDB

  1. Iniciar una transacción con BEGIN.
  2. Actualizar, insertar o eliminar registros.
  3. Confirmar los cambios con COMMIT o deshacerlos con ROLLBACK.
  4. Para crear una tabla InnoDB, se usa CREATE TABLE especificando ENGINE=InnoDB.

Simultaneidad

Se da en ambientes multiusuario, cuando se intenta acceder a un objeto de datos al mismo tiempo. Ocurre cuando no se establecen los controles adecuados para sincronizar los procesos que afectan a la base de datos. Comúnmente se refiere a la poca o nula efectividad de los procedimientos de bloqueo.

Granularidad: Es el tamaño de las unidades aseguradas. Ej: la granularidad puede proteger un campo, un registro, un archivo, etc.

Deadlock (Interbloqueo): Es una técnica que evita errores de concurrencia. Se da cuando se produce una espera circular entre dos transacciones, y cada una solicita una actualización sobre el mismo archivo. No permite a otros usuarios acceder al recurso hasta que termine el proceso. Se produce la espera circular.

Recuperación

Se encarga de recuperar los datos frente a las fuentes de error mencionadas anteriormente. La restauración de la base de datos a su estado normal es responsabilidad del DBA, quien es el responsable de implantar procedimientos de detección de error y recuperación.

El DBA tiene el control centralizado de la base de datos. Se persigue con esto reducir el número de personas que tengan acceso a los detalles técnicos y de diseño para la operación del DBMS.

Definición del Esquema

Crea el esquema original de la base de datos y genera el diccionario de datos por medio de proposiciones en DDL.

Recuperación (Backup)

Archivos logs (registro de transacciones): Son las transacciones diarias que se registran en la base de datos. Cuando ocurre un problema, se acude a los archivos de logs, se hace un reverso y también se puede recuperar la última transacción realizada.

Entradas relacionadas: