Ich benutze SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
in den meisten meiner allgemeinen SQL-Abfragen, hauptsächlich, weil dies mir beim ursprünglichen Erlernen der Sprache eingeflößt wurde.
Nach meinem Verständnis verhält sich diese Isolationsstufe genauso, WITH (NO LOCK)
wie ich sie jedoch immer nur benutze SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
.
- Gibt es überhaupt eine Zeit , die ich verwenden soll
WITH (NO LOCK)
überSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
. - Verhindert es,
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
dass andere Benutzer aus den von mir gelesenen Tabellen ausgeschlossen werden? - Wenn
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
zum Stoppen von Sperren verwendet wird, ich aber nur Daten lese, wozu dient es dann? Sind es nur systemintensive Abfragen, die Sperren erzeugen würden? Lohnt es sich, sie zu verwenden, wenn Abfragen ausgeführt werden, die in etwa 5-10 Sekunden zurückkehren würden? - Mir wurde gesagt,
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
dass ich beim Lesen von Daten, die für Aktualisierungen verwendet werden, keine Daten verwenden soll, vermutlich, um die Aktualisierung schmutziger Daten zu vermeiden. Wäre das der einzige Grund? - Mit der Art der Datenbank, an der ich arbeite, gibt es eine Produktions- und Testumgebung. Wir werden sehr selten die Produktionsumgebung abfragen, aber wenn ich muss, werde ich in der Regel
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
in meiner Abfrage verwenden. Ich verstehe, dass Dirty Reads damit möglich sind. Abgesehen davon, dass Sie Daten zurückerhalten, die möglicherweise nicht in der Datenbank gespeichert werden (und daher meine Ergebnisse verwerfen), welche anderen Arten von "Dirty Reads" könnten möglich sein?
Entschuldigung für die Massenfragen.
READ UNCOMMITTED
überall, in genau der gleichen Art und Weise , wie ich nicht verwenden würde WITH (NOLOCK)
überall (sie sind im Wesentlichen die gleiche Sache) blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere