web-dev-qa-db-fra.com

Comment fonctionnent les transactions ACID et de base de données?

Quelle est la relation entre ACID et la transaction de base de données?

Est-ce que ACID donne une transaction de base de données ou est-ce la même chose?

Quelqu'un pourrait-il éclairer ce sujet?.

148
never_had_a_name

ACIDE est un ensemble de propriétés que vous souhaitez appliquer lors de la modification d'une base de données.

  • L'atomicité
  • Cohérence
  • Isolement
  • Durabilité

Une transaction est un ensemble de modifications connexes utilisées pour obtenir certaines des propriétés ACID. Les transactions sont des outils pour atteindre les propriétés ACID.

Atomicité signifie que vous pouvez garantir que toutes les transactions ont lieu ou ne se produisent jamais. vous pouvez effectuer des opérations complexes comme une seule unité, tout ou rien, et un crash, une panne de courant, une erreur ou toute autre chose ne vous permettra pas de rester dans un état dans lequel seuls quelques-uns des changements associés ont eu lieu.

La cohérence signifie que vous garantissez que vos données seront cohérentes; Aucune des contraintes que vous avez sur les données associées ne sera jamais violée.

Isolation signifie qu'une transaction ne peut pas lire les données d'une autre transaction qui n'est pas encore terminée. Si deux transactions s'exécutent simultanément, chacune d'elles verra le monde comme si elles s'exécutaient de manière séquentielle, et si l'une doit lire des données écrites par une autre, elle devra attendre que l'autre soit terminée.

La durabilité signifie qu'une fois la transaction terminée, il est garanti que toutes les modifications ont été enregistrées sur un support durable (tel qu'un disque dur) et le fait que la transaction a été complétée est également enregistré.

Les transactions sont donc un mécanisme permettant de garantir ces propriétés; elles constituent un moyen de regrouper des actions connexes de manière à ce qu’ensemble, un groupe d’opérations puisse être atomique, produire des résultats cohérents, être isolé des autres opérations et être enregistré de manière durable.

303
Brian Campbell

Les ACID sont des propriétés souhaitables de tout moteur de traitement de transaction.

Un SGBD est (s’il s’agit d’un bien) un type particulier de moteur de traitement des transactions qui expose, généralement dans une très large mesure mais pas tout à fait, ces propriétés.

Mais il existe d’autres moteurs pouvant également exposer ces propriétés. Le type de logiciel qui s’appelait jadis "moniteur TP" en est un exemple typique (l’équivalent actuel étant essentiellement des serveurs Web).

Ces moniteurs TP peuvent accéder à des ressources autres qu’un SGBD (une imprimante, par exemple) tout en garantissant un ACID à leurs utilisateurs. Voici un exemple de ce que ACID pourrait signifier lorsqu'une imprimante est impliquée dans une transaction:

  • Atomicité: un document entier est imprimé ou rien du tout
  • Cohérence: en fin de transaction, l’alimentation papier est positionnée en haut de page
  • Isolement: deux documents ne sont pas mélangés lors de l'impression
  • Durabilité: l’imprimante peut garantir qu’elle n’imprimait pas avec des cartouches vides.
34
Erwin Smout

J'ai légèrement modifié l'exemple d'imprimante pour le rendre plus explicable

1 document contenant 2 pages de contenu a été envoyé à l'imprimante

Transaction - document envoyé à l'imprimante

  • atomicity - l'imprimante imprime 2 pages d'un document ou aucune
  • cohérence - l’imprimante imprime une demi-page et la page reste bloquée. L'imprimante redémarre d'elle-même et imprime 2 pages avec tout le contenu.
  • isolement - alors qu'il y avait trop d'impressions en cours, l'imprimante imprime le bon contenu du document.
  • durabilité - lors de l'impression, une imprimante à coupure de courant - réimprime les documents sans erreur

J'espère que cela aidera quelqu'un à comprendre le concept d'ACID

17
Manish Singh

Les propriétés ACID sont un concept très ancien et important de la théorie des bases de données. Je sais que vous pouvez trouver de nombreux articles sur ce sujet, mais je voudrais tout de même commencer à donner une réponse partagée à ce sujet, car il s'agit d'un sujet très important concernant le SGBDR.

Le système de base de données joue avec beaucoup de types différents de transactions où chaque transaction a certaines caractéristiques. Cette caractéristique est connue sous le nom Propriétés ACID. Les propriétés ACID acceptent toutes les transactions de base de données pour accomplir toutes les tâches.

Atomicité: soit commettre tout ou rien.

Cohérence: Créez un enregistrement cohérent en termes de validation de toutes les règles et contraintes de la transaction.

Isolement: Assurez-vous que deux transactions ne se connaissent pas.

Durabilité: données engagées stockées pour toujours. Référence tirée de cet article:

10
Anvesh

Quelle est la relation entre ACID et la transaction de base de données?

Dans une base de données relationnelle, chaque instruction SQL doit être exécutée dans le cadre d'une transaction.

Sans définir explicitement les limites des transactions, la base de données utilisera une transaction implicite qui enveloppe chaque instruction.

La transaction implicite commence avant l'exécution de l'instruction et se termine (validation ou annulation) après son exécution. Le mode de transaction implicite est communément appelé autocommit.

Comme expliqué dans cet article , une transaction est un ensemble d'opérations de lecture/écriture ne réussissant que si toutes les opérations contenues aboutissent.

Atomicity

De manière inhérente, une transaction est caractérisée par quatre propriétés (communément appelées ACID):

  • L'atomicité
  • Cohérence
  • Isolement
  • Durabilité

Est-ce que ACID donne une transaction de base de données ou est-ce la même chose?

Ceci est vrai pour un système de base de données relationnelle car SQL Standard spécifie qu'une transaction doit fournir les garanties ACID suivantes:

L'atomicité

Atomicity prend des opérations individuelles et les transforme en une unité de travail tout ou rien, ne réussissant que si et seulement si toutes les opérations contenues aboutissent.

Une transaction peut encapsuler un changement d'état (sauf s'il s'agit d'un changement en lecture seule). Une transaction doit toujours laisser le système dans un état cohérent, quel que soit le nombre de transactions simultanées entrelacées à un moment donné.

Cohérence

La cohérence signifie que des contraintes sont appliquées pour chaque transaction validée. Cela implique que toutes les clés, types de données, vérifications et déclencheurs réussissent et qu'aucune violation de contrainte n'est déclenchée.

Isolement

Les transactions nécessitent des mécanismes de contrôle de la simultanéité et garantissent leur exactitude même lors de l’entrelacement. L’isolement nous procure l’avantage de cacher les changements d’état non engagés du monde extérieur, car les transactions en échec ne devraient jamais corrompre l’état du système. L'isolement est obtenu par le contrôle de la concurrence utilisant des mécanismes de verrouillage pessimistes ou optimistes.

Durabilité

Une transaction réussie doit modifier en permanence l'état d'un système et, avant de le terminer, les changements d'état sont enregistrés dans un journal de transactions conservé. Si notre système est soudainement affecté par une panne système ou une panne de courant, toutes les transactions validées non terminées peuvent être rejouées.

enter image description here

Pour plus de détails sur Durability et le Redo Log, consultez cet article .

9
Vlad Mihalcea

Pour citer Wikipedia :

ACID (atomicité, cohérence, isolation, durabilité) est un ensemble de propriétés garantissant le traitement fiable des transactions de base de données.

Un SGBD prenant en charge les transactions s'efforcera de prendre en charge toutes ces propriétés - tout SGBD commercial (ainsi que plusieurs SGBD à code source ouvert) fournit une "prise en charge" ACID complète - bien qu'il soit souvent possible (par exemple, avec des niveaux d'isolation variables dans MSSQL) réduire le ACIDness - perdant ainsi la garantie d'un comportement entièrement transactionnel.

4
Will A

[Gray] a introduit les propriétés ACD pour une transaction en 1981. En 1983, [Haerder] a ajouté la propriété Isolation. À mon avis, les propriétés de l'ACD auraient un ensemble de propriétés plus utile à discuter. Une interprétation d'Atomicity (que la transaction devrait être atomique telle que vue par un client à tout moment) impliquerait en réalité la propriété d'isolation. La propriété "isolation" est utile lorsque la transaction est non isolée; lorsque la propriété d'isolement est relâchée. En langage ANSI SQL, parlez: si le niveau d’isolement est plus faible, SERIALIZABLE. Mais lorsque le niveau d'isolement est SERIALIZABLE, la propriété d'isolation n'est pas vraiment intéressante.

J'ai écrit plus à ce sujet dans un article de blog: "ACID n'a pas de sens".

http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html

[Gray] Le concept de transaction, Jim Gray, 1981. http://research.Microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf

[Haerder] Principes de la récupération de base de données axée sur les transactions, Haerder et Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf

2
Frans Lundberg

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.

Toutes les transactions doivent contenir quatre propriétés communément appelées propriétés ACID. i.e ACID sont le groupe de propriétés de toute transaction.

  • Atomicité:
  • Cohérence
  • Isolement
  • Durabilité
0
rashedcs