Jump to content

NO LOCK für Sichten?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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

Geschrieben

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.

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...