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
yROLLBACK
. Por defecto, MySQL trae activado el modo autocommit, es decir, realizada una transacción (por ejemplo, unINSERT
,UPDATE
oDELETE
), é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 oROLLBACK
para deshacer la transacción. - Para deshabilitar el autocommit para una serie de comandos, se puede utilizar
START TRANSACTION
(sin necesidad de configurarAUTOCOMMIT
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
yTEXT
. Además, este tipo de tablas soporta el tipo de datoVARCHAR
.- 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.
- Inconvenientes de MyISAM: Corrupción de datos por eliminación del proceso
- 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.
- Características de InnoDB: Recuperación automática ante fallos, integridad referencial, bloqueo a nivel de filas,
Pasos para Usar Transacciones en InnoDB
- Iniciar una transacción con
BEGIN
. - Actualizar, insertar o eliminar registros.
- Confirmar los cambios con
COMMIT
o deshacerlos conROLLBACK
. - Para crear una tabla InnoDB, se usa
CREATE TABLE
especificandoENGINE=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.