datobi1983 10 Geschrieben 12. März 2012 Melden Teilen Geschrieben 12. März 2012 Hallo MCSE Community, ich bin zum ersten mal hier, da ich bisher keine Hilfe brauchte. Nun bin ich gerade am optimieren einiger abfragen und wollte von euch folgendes wissen. Wenn ich eine Sicht mit "NO LOCK" ausgeben lasse, werden dann die in der Sicht enthaltenen Tabellen mit "NO LOCK" behandelt, sprich vererbt? Das würde den ganzen Aufwand um einiges verringern. Vielen Dank schon einmal im vorraus. Mit freundlichem Gruß Tobias Frömel Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 12. März 2012 Melden Teilen Geschrieben 12. März 2012 Hallo und willkommen im Forum. Ich vermute mal, dass diese Option den isolation mode temporär (für die Query) auf "Read uncommitted" bzw. "dirty read" stellt. Was genau soll da vererbt werden ? Dieser Isolation-Mode sollte nur mit Bedacht eingesetzt werden und auch nur, wenn die Genauigkeit der Daten keine Rolle spielt. Siehe u.a. auch Isolation (database systems) - Wikipedia, the free encyclopedia Zitieren Link zu diesem Kommentar
datobi1983 10 Geschrieben 12. März 2012 Autor Melden Teilen Geschrieben 12. März 2012 Hallo und willkommen im Forum. Ich vermute mal, dass diese Option den isolation mode temporär (für die Query) auf "Read uncommitted" bzw. "dirty read" stellt. Was genau soll da vererbt werden ? Dieser Isolation-Mode sollte nur mit Bedacht eingesetzt werden und auch nur, wenn die Genauigkeit der Daten keine Rolle spielt. Siehe u.a. auch Isolation (database systems) - Wikipedia, the free encyclopedia Hallo, vielen Danl für deine Antwort, keider kann ich mit "isolation mode" und "read uncommited" bzw. "dirty read" nichts anfangen :) Die Genauigkeit der Daten spielt eigentlich keine große Rolle. Was ich meine mit Vererbung, versuche ich an einem Beispiel zu verdeutlichen: Die Sicht wird wie folgt abgefragt SELECT * FROM [xx].[dbo].[abfrage_alle] with (NOLOCK) welches folgende Abfrage enthält: SELECT dbo.xxx.EON, dbo.yyy.Eingang, dbo.zzz.Name1 FROM dbo.yyy RIGHT OUTER JOIN dbo.xxx ON dbo.yyy.EON = dbo.xxx.EON LEFT OUTER JOIN dbo.zzz ON dbo.xxx.KundenAdresse = dbo.zzz.Adresse Bewirkt das bei der Sicht angehängte NOLOCK, das gleiche wie wenn ich es so machen würde: SELECT dbo.xxx.EON, dbo.yyy.Eingang, dbo.zzz.Name1 FROM dbo.yyy WITH (nolock) RIGHT OUTER JOIN dbo.xxx WITH (nolock) ON dbo.yyy.EON = dbo.xxx.EON LEFT OUTER JOIN dbo.zzz WITH (nolock) ON dbo.xxx.KundenAdresse = dbo.zzz.Adresse Oder muss ich definitiv in der Abfrage der Sicht bei jeder Tabelle das NOLOCK einzeln setzen? Mit freundlichem Gruß Tobias Frömel Zitieren Link zu diesem Kommentar
wiri 10 Geschrieben 12. März 2012 Melden Teilen Geschrieben 12. März 2012 Hi wenn nach deiner Aussage keine Genauigkeit der Daten ein Rolle spielt, mache die die Lesequery ohne NOLock Parameter und überlasse dem Datenbanknucleus die Entscheidung ob parallele Updates deine Lesetreffermenge beeinflussen. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.