Natürlich hängt es davon ab.
Es hängt von der Arbeit ab, die die bestimmte gespeicherte Prozedur durchführt, und vielleicht nicht so sehr das "Lese-/Schreib-Verhältnis", das Sie vorschlagen. Im Allgemeinen sollten Sie eine Arbeitseinheit innerhalb einer Transaktion einschließen, wenn es sich um eine Abfrage handelt, die von einer anderen, gleichzeitig ausgeführten Abfrage beeinflusst werden könnte. Wenn das nichtdeterministisch klingt, ist es das. Es ist oft schwierig vorherzusagen, unter welchen Umständen eine bestimmte Arbeitseinheit als Kandidat dafür in Frage kommt.
Ein guter Ort, um zu beginnen, ist die Überprüfung der genauen CRUD innerhalb der Einheit der Arbeit, in diesem Fall innerhalb Ihrer gespeicherten Prozedur durchgeführt wird, und entscheiden, ob es a) könnte durch eine andere, gleichzeitige Operation und b) wenn betroffen sein dass andere Arbeiten für das Endergebnis dieser Arbeit wichtig sind (oder sogar umgekehrt). Wenn die Antwort "Ja" für beide ist, dann überlegen Sie, die Arbeitseinheit innerhalb einer Transaktion zu verpacken.
Was dies bedeutet ist, dass Sie nicht immer einfach entweder verwenden oder nicht Transaktion s verwenden können, sollten Sie sie anwenden, wenn es sinnvoll ist.Verwenden Sie die durch ACID definierten Eigenschaften (Atomarität, Konsistenz, Isolation und Dauerhaftigkeit), um zu entscheiden, wann dies der Fall sein könnte. Eine andere zu berücksichtigende Sache ist, dass unter bestimmten Umständen, insbesondere wenn das System viele Operationen in schneller Folge ausführen muss, z. B. eine Anwendung zur Verarbeitung großer Transaktionsvolumen, die relativen Leistungskosten der Transaktion möglicherweise gewichtet werden müssen. Abhängig von der Größe der Arbeitseinheit kann ein Commit (oder Rollback) einer Transaktion ressourcenintensiv sein und sich möglicherweise negativ auf die Leistung Ihres Systems auswirken oder zumindest einen begrenzten Nutzen bringen.
Leider ist dies keine einfache Frage, um präzise zu beantworten: "Es kommt darauf an."
"benutzen Sie sie die ganze Zeit, es sei denn, Sie haben einen sehr guten Grund, nicht" das ist wie Leute sagen, Helme die ganze Zeit tragen, es sei denn, sie haben einen guten Grund nicht zu. –
Das geht davon aus, dass die Verwendung von Transaktionen in irgendeiner Weise nervig oder lächerlich ist, was ich nicht denke. –
Ich denke, @ Jeff Atwood hat nicht die volle para gelesen, bevor er zum Abschluss der Anziehen Helme kam. – Codeslayer