Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sollte ich beim Lesen von Datensätzen SQL-Transaktionen verwenden?

Wenn Sie alle Datensätze in einer einzigen Abfrage abfragen und sie auf einmal zurückholen, besteht keine Notwendigkeit. Alles wird in eine implizite Transaktion eingewickelt. Das heißt, selbst wenn Sie eine Million Datensätze zurückerhalten und selbst wenn andere Prozesse die Datensätze ändern, sehen Sie, wie alle eine Million Datensätze zum selben Zeitpunkt aussahen.

Die einzigen Fälle, in denen Sie wirklich eine Transaktion (und häufig einen bestimmten Sperrhinweis) in einem Nur-Lese-Prozess benötigen, sind:
- Sie lesen die Datensätze "stückchenweise" und brauchen nichts weiter, um die Werte zu ändern, während Sie itterieren aber. [Zum Beispiel ein verbundenes Recordset in ADO, durch das Sie sich bewegen.]
- Sie lesen einige Daten, führen einige Berechnungen durch, lesen dann einige zugehörige Daten, aber unter der Annahme, dass sich in der Zwischenzeit nichts geändert hat.


Kurz gesagt, Sie benötigen Transaktionen, wenn Sie möchten, dass andere Prozesse Ihre Daten zwischen SQL-Anweisungen nicht stören.