Introducción a las transacciones en SQL
Una transacción en SQL generalmente conocida como realizar pagos (envío, recepción, compras, etc.) pero cuando se trata de los campos técnicos, es la forma de actualizar la unidad lógica de información en la base de datos.
Una transacción es la implementación de uno o más cambios en la base de datos. Podemos agrupar múltiples consultas SQL y ejecutarlas a la vez en una transacción. Todas las consultas SQL se ejecutarían de una vez o todas se revertirían. Tendría solo dos resultados: éxito o fracaso.
La transacción una vez confirmada no puede ser una reversión, puede ser reversible solo si la transacción no se confirma. MYSQL confirma automáticamente los cambios en la base de datos si todas las consultas se ejecutan correctamente. Para confirmar explícitamente los cambios en la base de datos, primero debe deshabilitar la confirmación automática mediante el comando:
Sintaxis: SET autocommit = 0;
Propiedades de la transacción.
Las siguientes son las propiedades importantes de las transacciones, cada transacción debe seguir estas propiedades
1. Atomicidad
Una transacción debe ser atómica, la manipulación de datos promedio debe completarse para una determinada unidad lógica. Esta propiedad garantiza que los cambios en los datos se hayan realizado por completo, de lo contrario, anulará la transacción.
2. Consistencia
Una vez que finaliza la transacción, todos los registros disponibles serán coherentes durante toda la transacción. Esta propiedad asegura que la propiedad de la base de datos cambió de estado después de una confirmación exitosa o no.
3. Aislamiento
El aislamiento se refiere a los cambios de datos en una determinada unidad lógica que no debería afectar a otra unidad. Permite que una transacción se ejecute de forma independiente.
4. Durabilidad
Los cambios realizados durante las transacciones deben ser permanentes en el sistema. En caso de un error del sistema, esta propiedad también garantiza que los cambios de datos tengan lugar o no.
La propiedad de la transacción mencionada anteriormente también se conoce como propiedad ACID.
Pasos de transacción
1. Comience
Una transacción puede ocurrir en múltiples ejecuciones de SQL, pero todo SQL debe ejecutarse a la vez. Si alguna de las transacciones falla, la transacción completa se revertirá. El enunciado para iniciar la transacción es "INICIAR TRANSACCIÓN". Comienza el acrónimo de INICIAR TRANSACCIÓN.
Sintaxis: INICIAR LA TRANSACCIÓN;
2. Comprometerse
Las confirmaciones reflejan permanentemente los cambios en la base de datos. La declaración para iniciar la transacción es "COMPROMISO".
Sintaxis: COMMIT;
3. Rollback
La reversión se usa para revertir los cambios, es decir, el registro no se cambiará, estaría en el estado anterior. La declaración para iniciar la transacción es "ROLLBACK".
Sintaxis: ROLLBACK;
4. Savepoint
SAVEPOINT también es una declaración de transacción. Esta declaración solía crear un punto de almacenamiento en el sistema para que la operación ROLLBACK pueda alcanzar el estado del punto de guardado.
5. Release Savepoint
RELEASE SAVEPOINT es una declaración para liberar el punto de guardado y la memoria consumida por el sistema al crear un punto de guardado.
Sintaxis: RELEASE SAVEPOINT SP
Notas: SP es el nombre del punto de guardado cuando este punto de guardado se creó antes del inicio de la transacción.
6. Establecer transacción
El comando SET TRANSACTION se usa para especificar el atributo de transacción, como que la transacción dada es una sesión de solo lectura o lectura-escritura.
Sintaxis : SET TRANSACTION (READ-WRITE | READ ONLY);
La transacción se utiliza para realizar los cambios complejos en la base de datos. Se utiliza principalmente en cambios de información relacionada con la banca en una base de datos relacional.
La transacción es compatible con el motor MYSQL InnoDB. De forma predeterminada, la confirmación automática permanece habilitada, por eso cada vez que se ejecuta un SQL después de que se realizan confirmaciones de ejecución automáticamente.
Transacciones usando SQL
Ejemplo 1
Transacción bancaria: una cuenta debitada por una cantidad de 50000 de la cuenta de ahorro de la persona A y presentada esta cantidad a la cuenta de préstamo de A.
Iniciar transacción: esta transacción inicial convertirá todas las consultas SQL en una sola unidad de transacción.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Esta consulta SQL deduce el importe del saldo de la cuenta existente.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Esta consulta SQL agrega el monto a la cuenta de préstamo del usuario.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Esta consulta SQL inserta un nuevo registro en la tabla de detalles de la transacción, esta tabla contiene los detalles de todas las transacciones de los usuarios. Si toda la consulta se ejecutó correctamente, entonces el comando COMMIT debe ejecutarse ya que los cambios deben almacenarse permanentemente en la base de datos.
Confirmar: esta instrucción de confirmación guarda los cambios invocados por una transacción en la base de datos. Si alguna de las transacciones falla durante la ejecución, se debe ejecutar el comando ROLLBACK para revertir la transacción completa
Rollback: Rollback tiene lugar una vez que falla cualquier consulta durante la ejecución.
Ejemplo # 2
Transacción de inventario: en la tabla de Artículos dada hay 6 artículos disponibles.
Ejecutando la siguiente instrucción START TRANSACTION para iniciar la transacción.
Ahora ejecute el comando SET AUTOCOMMIT = 0 ; para deshabilitar la confirmación automática
Ahora ejecutando la siguiente instrucción para eliminar el registro de la tabla de elementos
Ahora el registro disponible en la tabla es 4, es decir, registros eliminados temporalmente de los elementos de la tabla
Ahora ejecutando el comando ROLLBACK para revertir los cambios, el registro eliminado estaría disponible en los elementos de la tabla como antes antes de comenzar la transacción
Nuevamente, si aplica la misma operación de eliminación, la operación COMMIT después de que los cambios se guarden permanentemente en la base de datos
Ahora podemos ver que después del comando ROLLBACK aún, el registro estaba en un nuevo estado, lo que significa que una vez que la operación COMMIT realizó los cambios no se pueden revertir porque realiza cambios permanentemente en la base de datos;
Beneficios de usar Transaction en SQL
a) El uso de Transacción mejora el rendimiento , al insertar 1000 registros usando transacciones en ese caso, el tiempo empleado sería menor que la inserción normal. Al igual que en una transacción normal, cada vez que se realiza COMMIT después de la ejecución de cada consulta y aumenta el tiempo de ejecución cada vez que se realiza una transacción, no es necesario ejecutar la instrucción COMMIT después de cada consulta SQL. COMMIT al final reflejaría todos los cambios en la base de datos de forma permanente a la vez. Además, si usa la transacción, la reversión de los cambios sería mucho más fácil que la transacción normal. ROLLBACK revertirá todos los cambios a la vez y mantendrá el sistema en el estado anterior.
b) La transacción asegura la integridad de los datos en la base de datos relacional. La mayoría de la base de datos usa varias tablas para mantener los datos y, al realizar actualizaciones, puede haber cambios en las múltiples tablas en ese momento si alguna de las consultas SQL falla, la transacción mantendrá los datos sin cambios.
Conclusión
Usar Transacciones es una práctica recomendada en la actualización de información para una unidad lógica en una base de datos relacional. Para la implementación de la transacción, el motor de base de datos debe admitir la transacción como el motor InnoDB. La transacción, como una unidad de instrucciones SQL, se puede revertir de una vez usando una sola instrucción ROLLBACK. La transacción garantiza la integridad de los datos y mejora el rendimiento de la base de datos.
Artículos recomendados
Esta es una guía de transacciones en SQL. Aquí discutimos la introducción, propiedades, pasos, ejemplos de transacciones en SQL junto con los beneficios de usar la transacción en SQL.
- ¿Qué es SQL?
- Herramientas de administración de SQL
- Vistas SQL
- Tipos de combinaciones en SQL Server
- Los 6 tipos principales de combinaciones en MySQL con ejemplos