2011-10-03 17 views
9

Zastanawiam się, czy wystąpił wpływ na wydajność dodawania kolumny rowversion na tabeli w bazie danych serwera Sql?RowVersion i wydajność

+3

w porównaniu do czego? jeśli potrzebujesz rowwersji, potrzebujesz rowversion .... –

+2

Zgadzam się z Mitchem. Jakiego obejścia zastąpiłbyś, gdybyś go potrzebował? – gbn

+0

możliwy duplikat [Czy rowversion/timestamp wpływa znacząco na wydajność?] (Http://stackoverflow.com/questions/7217062/does-rowversion-timestamp-affects-performance-significantly) –

Odpowiedz

14

Istnieje kilka implikacji związanych z wydajnością, rowversion to tylko nowa nazwa dla starego typu datownika. Zatem twoja baza danych będzie musiała przechowywać dodatkowe pole binarne. Twój wydajność będzie cierpieć znacznie więcej podczas próby zrobić zapytań o te dane, takie jak:

SELECT * 
FROM MyTable 
WHERE rowVersion > @rowVersion 

który jest wspólny sposób, który można wykorzystać, aby uzyskać listę aktualizowanych pozycji od ostatniej @rowVersion. To wygląda dobrze i będzie działać idealnie na stole z napisem 10.000 wierszy. Ale kiedy dojdziesz do 1M wierszy, szybko odkryjesz, że zawsze robiło się to na stołach, a twoje trafienie wydajnościowe jest takie, że twój stół nie pasuje już całkowicie do pamięci RAM serwera.

Jest to typowy problem, który napotyka się w kolumnie rowVersion, nie jest indeksowany w magiczny sposób. Ponadto podczas indeksowania kolumny wierszWersja należy zaakceptować, że indeks będzie często bardzo fragmentaryczny w czasie, ponieważ nowe zaktualizowane wartości zawsze będą znajdować się w dolnej części indeksu, pozostawiając przerwy w indeksie podczas aktualizacji istniejących elementów .

Edytuj: Jeśli nie używasz pola rowVersion do sprawdzania zaktualizowanych elementów, a zamiast tego użyjesz go dla zachowania spójności, aby upewnić się, że rekord nie został zaktualizowany od ostatniego czytania, to się dzieje być całkowicie do przyjęcia i nie wpłynie.

UPDATE MyTable SET MyField = ' @myField 
WHERE Key = @key AND rowVersion = @rowVersion 
Powiązane problemy