Zastanawiam się, czy wystąpił wpływ na wydajność dodawania kolumny rowversion na tabeli w bazie danych serwera Sql?RowVersion i wydajność
Odpowiedz
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
- 1. Porównanie Rowversion w Entity Framework
- 2. Serwer SQL: odpowiednik RowVersion w Oracle
- 3. Zrozumienie wydajność Sinon.js w(), wydajność()() i callsArg
- 4. Wzorzec specyfikacji i wydajność
- 5. Wydajność hibernacji i JDBC?
- 6. Współdzielone wskaźniki i wydajność
- 7. Python wątek i wydajność?
- 8. Wydajność i szyjka butelki Zend_Search_Lucene?
- 9. Prolog wydajność i rekurencji typu
- 10. Mathematica „Listy” połączone i wydajność
- 11. Log.d i wpływ na wydajność
- 12. Symfony2 czas ładowania i wydajność
- 13. MVC3 - umieszczanie tablicy bajtów w kontrolerze - Database RowVersion
- 14. Dane Leaflet.js i JSON: optymalizacja i wydajność
- 15. Co się stanie, gdy pojawi się przepełnienie timestampu (rowversion)?
- 16. wydajność i zatrzymanie Pythona w jednej pętli?
- 17. Wydajność protokołów IPX/SPX i TCP/IP
- 18. KineticJS: wydajność animacji w Firefoksie i Chrome
- 19. Moduł JavaScript Pamięć modelu i wydajność
- 20. Bezpieczeństwo i wydajność wątku w książce adresowej
- 21. Statystyczna wydajność czysto funkcjonalnych map i zestawów
- 22. pętle, projektowanie i wydajność funkcji: dwa pytania
- 23. Wydajność i dane podstawowe rozwiązania RestKit
- 24. Core Data vs Sqlite i wydajność
- 25. Hierarchiczne dane w Linq - opcje i wydajność
- 26. Repa 3 wydajność i poprawne użycie "teraz"
- 27. C licznik # wydajność i nic nazwa
- 28. Scala Collection sortowane, sortWith i SortBy Wydajność
- 29. wydajność Pythona i duże obiekty w pamięci
- 30. Java: Porównanie int i Strings - wydajność
w porównaniu do czego? jeśli potrzebujesz rowwersji, potrzebujesz rowversion .... –
Zgadzam się z Mitchem. Jakiego obejścia zastąpiłbyś, gdybyś go potrzebował? – gbn
możliwy duplikat [Czy rowversion/timestamp wpływa znacząco na wydajność?] (Http://stackoverflow.com/questions/7217062/does-rowversion-timestamp-affects-performance-significantly) –