Beeinflusst rowversion / timestamp die Leistung erheblich?

8

Ich möchte zu den meisten Tabellen in meiner DB-Zeilenversion hinzufügen, um Änderungen in diesen Tabellen zu verfolgen. Ich weiß, dass das Hinzufügen die Leistung von Abfragen beeinflussen wird.

Weiß jemand, ob es die Leistung ein wenig beeinträchtigt (ein paar Prozent langsamer) oder ich sollte keine Zeilenversion zu vielen Tabellen hinzufügen, weil es die DB viel langsamer macht.

    
Marek Kwiendacz 27.08.2011, 20:11
quelle

2 Antworten

5

Der Leistungsunterschied beim Hinzufügen einer Spalte rowversion / timestamp ist, dass Ihre Zeilen jetzt 8 Bytes breiter sind.

Der tatsächliche Leistungsunterschied kommt, wenn Sie anfangen, sie tatsächlich für etwas zu verwenden. Aber wie ich in meiner Antwort auf eine ähnliche Frage zeige: RowVersion und Performance

  

Wenn Sie nicht das Feld " rowVersion " verwenden, um nach aktualisierten Elementen zu suchen, sondern es aus Konsistenzgründen verwenden, um sicherzustellen, dass der Datensatz seit dem letzten Lesen nicht aktualisiert wurde, dann wird dies der Fall sein eine vollkommen akzeptable Verwendung sein und keine Auswirkungen haben.

     

wie:

%Vor%

Die Leistung, wenn Sie nur die Zeile überprüfen, um sicherzustellen, dass sie seit dem letzten Lesen der Anwendung nicht aktualisiert wurde, ist ein trivialer Leistungsunterschied (sie muss die Zeile lesen, um sie trotzdem zu aktualisieren).

Aber die Leistung, wenn wir versuchen, eine rowversion / timestamp-Spalte als Mittel zu verwenden, um alle aktualisierten Elemente seit der letzten Überprüfung zu erhalten, wird sehr schlecht sein.

    
Seph 01.11.2011 06:30
quelle
1

Von Interesse ist, dass die Versionierung, die wir verwenden, von Triggern ausgefüllt ist. Als ich das sah, musste ich mehr über die Performance erfahren. Also machte ich mich daran, ein Testszenario zu erstellen. Ich wollte vergleichen, was wir derzeit (Trigger) gegenüber einer Zeilenversionsspalte gegenüber einer anderen Tabelle ohne Versionierung verwenden.

Es ist nicht überraschend, dass der Trigger definitiv schlechter abschnitt als die Zeilenversion. Rowversion war im Wesentlichen identisch mit der Aktualisierungszeit für eine Tabelle ohne Versionsverwaltung. Einige Runs zeigen, dass die Tabelle ohne Versionierung schneller ist, aber um eine gleiche # show rowversion schneller zu sein. Für mich bedeutet das, dass es so wenig Overhead bei der Verwendung gibt, dass zufällige CPU- und Festplatten-I / O den wahren Leistungsunterschied verbergen.

%Vor%     
UnhandledExcepSean 08.10.2015 21:08
quelle