Ich versuche nicht, eine Windows / Mac-Diskussion zu starten.
Persönlich brauche ich keine Überzeugung, die NOLOCK
als reflexive Praxis keine gute Idee ist. Es scheint, wenn Sie entwickeln, sollte alles zielgerichtet und nicht reaktionär sein (/ amen)
Also ... der verantwortliche Programmierer besteht darauf, dass dies NOLOCK
der richtige Weg ist. Empfohlen bei allen Ad-hoc-Abfragen und bei jeder Abfrage der Produktion. Ich habe nicht auf jeder Tabelle eine gespeicherte Prozedur ohne Nolock-Hinweise gesehen.
Ich möchte nicht der Typ sein, der hereinkommt und allen sagt, dass eine Grundüberzeugung falsch ist, ohne dass etwas dahinter steckt.
Es reicht möglicherweise nicht aus, nur die Kommentarsitzungen unter den verschiedenen Blog-Posts zu betrachten, um einen Link zu senden. Langjährige Überzeugungen usw. Einige Leute sind nicht davon überzeugt, dass es ein Problem ist. Siehe: Kommentarbereich unter jedem Nolock-Blog-Beitrag, den ich gelesen habe.
Derzeit ringen einige andere Datenbankadministratoren mit mysteriösen Deadlocks. Wie kann man feststellen, ob NOLOCKs die Quelle sind?
Es wurde vorgeschlagen, XML anhand von Traces usw. zu betrachten, aber dies wird nicht explizit angeben, dass die Deadlocks das Problem verursachen, oder? Ich habe noch nie so einfache Fehlermeldungen gesehen. ist das wahr?
Wie sonst könnten diese Deadlocks daran befestigt werden?
DDL-Anweisungen wie CREATE
wären ein Hinweis. Gibt es eine Ausgabe, auf die ich verweisen könnte, oder Daten, die ich finden könnte, um meine Theorie zu bestätigen, bevor ich den Alarm auslöse?
Oder führe ich Ablaufverfolgungsflags oder erweiterte Ereignisse aus, um festzustellen, was ausgeführt wird, wenn Deadlocks auftreten, und um dann aus DDL-Anweisungen abzuleiten?
Wenn man sich die verschiedenen Möglichkeiten ansieht, wie Daten mit Nolock-Hinweisen durcheinander gebracht werden können, scheint es ein schwieriges Problem zu sein, sie genau zu bestimmen.