2010-07-21 5 views

Répondre

1

Non, ce n'est pas spécifique à l'hibernation.

Réponse courte: Les transactions sont des "unités de travail atomiques" avec une vision cohérente du monde. Une fois la transaction terminée, la "vue" protégée doit être rectifiée avec la vue du monde (COMMITTED) - ou, dans le cas d'une transaction en lecture seule, la vue cohérente peut simplement être absous (il suffisait d'être cohérent pendant la transaction). Réponse plus longue: Il existe de nombreux types de transactions (LIRE NON CONÇU, LIRE ENGAGÉ, SÉRIEISABLE, LECTURE RÉPÉTABLE, etc.) qui affectent les détails fins.

Voir Wiki: Database Transaction et Isolation (DBMS) - celui-ci prend quelques clics pour trouver le lien :-)

Imaginez cette séquence rapidement artificielle, A et B représentent différents acteurs utilisant la base de données et chaque action fonctionne dans son propre de un hors transaction implicite (et rien d'autre):

  1. a lire dans la liste des utilisateurs
  2. B supprime un utilisateur (et toutes les données associées)
  3. a obtient les informations pour chaque utilisateur (en utilisant l'information récupérée précédente). Cependant, il y a au moins un utilisateur qui n'existe plus. Mieux traiter avec ça.

Voir la section «Exemples de requêtes» de l'article wiki d'isolation.

+0

droit, mais si une action du serveur effectue une seule lecture, les erreurs de type lecture non validées ne se produisent-elles pas lorsqu'une opération simultanée qui écrit n'a pas le type d'isolation de transaction correct? – hvgotcodes

+0

@hvgotcodes Je qualifierai un peu mon commentaire précédent. Si vous effectuez une seule lecture dans SQL Server *, vous ne vous inquiétez pas des transactions car vous serez automatiquement impliqué dans une transaction implicite. –