web-dev-qa-db-fra.com

Qu'est-ce qu'une transaction de base de données?

Quelqu'un peut-il fournir une explication simple (mais pas plus simple que possible) d'une transaction appliquée à l'informatique (même si elle est copiée à partir de Wikipedia)?

94
Vlad Gudim

Une transaction est une unité de travail que vous souhaitez traiter comme "un tout". Cela doit se faire en totalité ou pas du tout.

Un exemple classique consiste à transférer de l'argent d'un compte bancaire à un autre. Pour ce faire, vous devez d'abord retirer le montant du compte source, puis le déposer sur le compte de destination. L'opération doit réussir pleinement. Si vous vous arrêtez à mi-chemin, l'argent sera perdu, ce qui est très mauvais.

Dans les bases de données modernes, les transactions ont également d'autres effets, comme par exemple s'assurer que vous ne pouvez pas accéder aux données écrites à mi-chemin par une autre personne. Mais l’idée de base est la même: les transactions sont là pour garantir que quoi qu’il advienne, les données avec lesquelles vous travaillerez seront dans un état raisonnable. Ils garantissent qu’il n’y aura PAS de situation dans laquelle l’argent sera retiré d’un compte mais non déposé dans un autre.

211
Vilx-

Une transaction est un moyen de représenter un changement d'état. Les transactions ont idéalement quatre propriétés, communément appelées ACID:

  • Atomique (si le changement est engagé, il se produit d'un seul coup; vous ne pouvez jamais voir "un demi-changement")
  • Cohérent (la modification ne peut avoir lieu que si le nouvel état du système est valide; toute tentative de validation d'une modification non valide échoue et le système reste dans son état de validité précédent)
  • Isolé (personne d'autre ne voit une partie de la transaction tant qu'elle n'est pas validée)
  • Durable (une fois que le changement a eu lieu - si le système indique que la transaction a été validée, le client n'a pas à s'inquiéter de "vider" le système pour que le changement soit "rendu".)

Voir la Wikipedia ACIDE entrée pour plus de détails.

Bien que cela soit généralement appliqué aux bases de données, ce n'est pas nécessairement le cas. (En particulier, voir Software Transactional Memory .)

68
Jon Skeet

Voici une explication simple. Vous devez transférer 100 dollars du compte A au compte B. Vous pouvez soit:

accountA -= 100;
accountB += 100;

ou

accountB += 100;
accountA -= 100;

Si quelque chose ne va pas entre la première et la deuxième opération de la paire, vous avez un problème: soit 100 dollars ont disparu, soit ils sont sortis de nulle part.

Une transaction est un mécanisme qui vous permet de marquer un groupe d'opérations et de les exécuter de manière à ce qu'elles s'exécutent toutes (commit) ou que l'état du système soit comme si elles n'avaient pas encore commencé à s'exécuter (annulation).

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

transférera 100 dollars ou laissera les deux comptes dans l’état initial.

35
sharptooth

"Une série d'instructions de manipulation de données qui doivent être complètement terminées ou échouer complètement, laissant la base de données dans un état cohérent"

31
Rad

Une transaction est une séquence d'une ou plusieurs opérations SQL traitées comme une unité.

Plus précisément, chaque transaction semble s’exécuter de manière isolée et, en outre, en cas de défaillance du système, chaque transaction est exécutée dans son intégralité ou n’est pas entièrement exécutée.

Le concept de transaction est motivé par deux préoccupations totalement indépendantes. L'une concerne l'accès simultané à la base de données par plusieurs clients et l'autre, un système résilient aux pannes du système.

Transaction prend en charge ce que l’on appelle les propriétés ACID:

  • A: Atomicité;
  • C: cohérence;
  • I: isolement;
  • D: durabilité.
10
Mourad BENKDOUR

http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = [~ # ~] a [~ # ~] tomicity, [~ # ~] c [~ # ~] persistance, [~ # ~] i [~ # ~] solation, [~ # ~] d [~ # ~] urabilité

Si vous souhaitez que plusieurs ressources transactionnelles soient impliquées dans une seule transaction, vous devez utiliser quelque chose comme une solution validation en deux phases . XA est assez largement supporté.

3
Stephen Denne

Je suggérerais qu'une définition du "traitement des transactions" serait plus utile, car elle couvre les transactions en tant que concept en informatique.

De wikipedia:

En informatique, le traitement des transactions est un traitement de l’information divisé en opérations individuelles, indivisibles, appelées transactions. Chaque transaction doit réussir ou échouer comme une unité complète; il ne peut pas rester dans un état intermédiaire.

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

1
Adam Cooper

Outre les réponses ci-dessus, il convient de noter qu’il n’existe, du moins en théorie, aucune restriction quant au type de ressources impliquées dans une transaction.

La plupart du temps, il ne s'agit que d'une base de données, ou de plusieurs bases de données distinctes, mais il est également concevable qu'une imprimante participe à une transaction et provoque son échec, par exemple en cas de bourrage de papier.

1
Erwin Smout

La transaction peut être définie comme un ensemble de tâches considérées comme unité de traitement minimale. Chaque unité de traitement minimale ne peut pas être divisée davantage.

Les opérations principales d'une transaction sont en lecture et en écriture.

Toute transaction doit contenir quatre propriétés communément appelées propriétés ACID afin de garantir l'exactitude, l'exhaustivité et l'intégrité des données.

1
rashedcs

Je pense qu'une transaction est une action atomique en termes de SGBD.

cela signifie qu'il ne peut pas être séparé. oui, dans une transaction, il peut y avoir plusieurs instructions à exécuter par le système. mais ils sont liés pour terminer une tâche de base unique.

par exemple. vous devez traverser un pont (considérons cela comme une transaction) et pour ce faire, disons que vous avez besoin de 100 étapes. dans l'ensemble, ces étapes ne peuvent pas être séparées. quand vous avez fait la moitié, il n’ya plus que deux choix: continuez de tous les finir et revenez au point de départ. c'est comme le résultat d'une transaction: succès (commis) et échec (restauration)

0
fwoncn

La transaction est une unité indivisible de traitement des données - Toutes les transactions doivent avoir les propriétés ACID:

c'est-à-dire que l'atomicité, la cohérence, l'isolement et la transaction durable sont tout ou rien, mais ne s'interposent pas (cela signifie que si vous transférez votre argent d'un compte à un autre, un compte doit perdre autant et un autre doit gagner ce montant, mais si vous transférez de l'argent d'un compte et un autre compte est toujours vide et ne sera pas une transaction)

0
Mohamed Seif