¿Qué es una transacción de base de datos?

Respuestas:

239

Una transacción es una unidad de trabajo que desea tratar como "un todo". Tiene que suceder en su totalidad o no suceder en absoluto.

Un ejemplo clásico es la transferencia de dinero de una cuenta bancaria a otra. Para hacer eso, primero debe retirar el monto de la cuenta de origen y luego depositarlo en la cuenta de destino. La operación debe tener éxito en su totalidad. Si se detiene a la mitad, se perderá el dinero, y eso es muy malo.

En las bases de datos modernas, las transacciones también hacen otras cosas, como asegurarse de que no pueda acceder a los datos que otra persona ha escrito a medias. Pero la idea básica es la misma: las transacciones están ahí para garantizar que , pase lo que pase, los datos con los que trabaja estarán en un estado sensible . Garantizan que NO habrá una situación en la que se retire dinero de una cuenta, pero no se deposite en otra.

Vilx-
fuente
Gracias por el ejemplo muy simple
Nomadme
buena explicación!
Yan Myo Aung
81

Una transacción es una forma de representar un cambio de estado. Idealmente, las transacciones tienen cuatro propiedades, comúnmente conocidas como ACID:

  • Atómico (si el cambio se confirma, ocurre de una sola vez; nunca se puede ver "medio cambio")
  • Consistente (el cambio solo puede ocurrir si el nuevo estado del sistema será válido; cualquier intento de realizar un cambio no válido fallará, dejando el sistema en su estado válido anterior)
  • Aislado (nadie más ve ninguna parte de la transacción hasta que se confirma)
  • Durable (una vez que se ha realizado el cambio; si el sistema dice que la transacción se ha confirmado, el cliente no tiene que preocuparse por "vaciar" el sistema para que el cambio "se mantenga")

Consulte la entrada de Wikipedia ACID para obtener más detalles.

Aunque esto se aplica normalmente a las bases de datos, no tiene por qué ser así. (En particular, consulte Memoria transaccional de software ).

Jon Skeet
fuente
46

He aquí una explicación sencilla. Necesita transferir 100 dólares de la cuenta A a la cuenta B. Puede hacer:

accountA -= 100;
accountB += 100;

o

accountB += 100;
accountA -= 100;

Si algo sale mal entre la primera y la segunda operación en el par, tienes un problema: o han desaparecido 100 dólares o han aparecido de la nada.

Una transacción es un mecanismo que le permite marcar un grupo de operaciones y ejecutarlas de tal manera que todas se ejecutan (se comprometen) o el estado del sistema será como si no hubieran comenzado a ejecutarse en absoluto (reversión).

beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;

transferirá 100 dólares o dejará ambas cuentas en el estado inicial.

sharptooth
fuente
31

"Una serie de declaraciones de manipulación de datos que deben completarse o fallar por completo, dejando la base de datos en un estado consistente"

Rad
fuente
2
No solo base de datos. Podemos extender este concepto a otros componentes, como el servicio de cola o el estado de los sistemas externos. Entonces, "Una serie de declaraciones de manipulación de datos que deben completarse o fallar completamente, dejando el sistema en un estado consistente"
Michał Chaniewski
10

Una transacción es una secuencia de una o más operaciones SQL que se tratan como una unidad.

Específicamente, cada transacción parece ejecutarse de forma aislada y, además, si el sistema falla, cada transacción se ejecuta en su totalidad o no en su totalidad.

El concepto de transacciones está motivado por dos preocupaciones completamente independientes. Uno tiene que ver con el acceso concurrente a la base de datos por parte de varios clientes y el otro tiene que ver con tener un sistema que sea resistente a fallas del sistema.

Transaction admite lo que se conoce como propiedades ACID:

  • A: Atomicidad;
  • C: consistencia;
  • I: Aislamiento;
  • D: Durabilidad.
Mourad BENKDOUR
fuente
1

Sugeriría que una definición de 'procesamiento de transacciones' sería más útil, ya que cubre las transacciones como un concepto en informática.

De wikipedia:

En informática, el procesamiento de transacciones es el procesamiento de información que se divide en operaciones individuales e indivisibles, llamadas transacciones. Cada transacción debe tener éxito o fracasar como una unidad completa; no puede permanecer en un estado intermedio.

http://en.wikipedia.org/wiki/Transaction_processing#Implementations

Adam Cooper
fuente
1

Además de las respuestas anteriores, cabe señalar que, al menos en teoría, no existe restricción alguna en cuanto a qué tipo de recursos están involucrados en una transacción.

La mayoría de las veces, es solo una base de datos o varias bases de datos distintas, pero también es concebible que una impresora participe en una transacción y pueda hacer que esa transacción falle, por ejemplo, en el caso de un atasco de papel.

Erwin Smout
fuente
1

La transacción se puede definir como una colección de tareas que se consideran como unidad mínima de procesamiento. Cada unidad mínima de procesamiento no se puede dividir más.

Las operaciones principales de una transacción son la lectura y la escritura.

Toda transacción debe contener cuatro propiedades que comúnmente se conocen como propiedades ACID con el fin de garantizar la precisión, la integridad y la integridad de los datos.

rashedcs
fuente
0

Creo que una transacción es una acción atómica en términos de DBMS.

eso significa que no se puede separar. sí, en una transición, puede haber varias instrucciones para que el sistema las ejecute. pero están unidos para terminar una sola tarea básica.

por ejemplo. necesita caminar a través de un puente (tratemos esto como una transición), y para hacer esto, digamos, necesita 100 pasos. en general, estos pasos no se pueden separar. cuando haya hecho la mitad de ellos, solo hay dos opciones para usted: continuar para terminarlos todos y volver al punto de inicio. es como el resultado de una transacción: éxito (comprometido) y error (reversión)

fwoncn
fuente
0

La transacción es una unidad indivisible de procesamiento de datos -Todas las transacciones deben tener las propiedades ACID:

es decir: Atomicidad, consistencia, aislamiento y transacción duradera es todo o nada, pero no intermedio (significa que si transfiere su dinero de una cuenta a otra cuenta, una cuenta tiene que perder esa cantidad y otra tiene que ganar esa cantidad, pero si transfiere dinero de una cuenta y otra cuenta aún está vacía y no será una transacción)

Mohamed Seif
fuente