Istnieje kilka implikacji wydajnościowych, rowversion to tylko nowa nazwa starego typu danych znacznika czasu. Twoja baza danych będzie musiała przechowywać dodatkowe pole binarne. Twoja wydajność ucierpi znacznie bardziej, gdy spróbujesz wykonać zapytania na tych danych, takie jak:
SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion
Jest to najczęstszy sposób, w jaki można uzyskać listę zaktualizowanych elementów od ostatniego @rowVersion. Wygląda to dobrze i będzie działać idealnie dla tabeli zawierającej powiedzmy 10 000 wierszy. Ale kiedy dojdziesz do 1 miliona wierszy, szybko odkryjesz, że zawsze skanował tabele, a Twój hit wydajności wynika z tego, że Twoja tabela nie mieści się już całkowicie w pamięci RAM serwera.
Jest to częsty problem występujący w rowVersion
kolumna, nie jest magicznie indeksowana sama z siebie. Ponadto podczas indeksowania kolumny rowVersion musisz zaakceptować fakt, że indeks często będzie bardzo pofragmentowany w czasie, ponieważ nowe zaktualizowane wartości zawsze będą znajdować się na dole indeksu, pozostawiając luki w indeksie podczas aktualizowania istniejących elementów .
Edycja:jeśli nie zamierzasz użyć rowVersion
pole do sprawdzania zaktualizowanych elementów, a zamiast tego użyjesz go dla spójności, aby upewnić się, że rekord nie jest aktualizowany od ostatniego czytania, będzie to całkowicie akceptowalne użycie i nie będzie miało wpływu.
UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersion