Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

RowVersion и производителност

Има малко последици за производителността, rowversion е просто ново име за стария тип данни за времево клеймо. Така че вашата база данни ще трябва да съхранява допълнителното двоично поле. Вашата производителност ще пострада много повече, когато се опитате да направите заявки за тези данни като:

SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion

Което е обичайният начин, който може да се използва за получаване на списъка с актуализирани елементи от последната @rowVersion. Това изглежда добре и ще работи перфектно за таблица с да речем 10 000 реда. Но когато стигнете до 1 милион реда, бързо ще откриете, че той винаги е извършвал сканиране на таблици и вашият удар в производителността е, защото вашата таблица вече не се побира изцяло в RAM паметта на сървъра.

Това е често срещаният проблем, който се среща при rowVersion колона, тя не е магически индексирана сама по себе си. Освен това, когато индексирате колона rowVersion, трябва да приемете, че индексът често ще бъде много фрагментиран с течение на времето, тъй като новите актуализирани стойности винаги ще бъдат в долната част на индекса, оставяйки празнини в целия индекс, докато актуализирате съществуващи елементи .

Редактиране:Ако няма да използвате rowVersion поле за проверка за актуализирани елементи и вместо това ще го използвате за последователност, за да сте сигурни, че записът не е актуализиран от последното ви четене, тогава това ще бъде напълно приемлива употреба и няма да повлияе.

UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersion



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да настроите 'започнете с' на последователност, за да изберете резултат от заявка в SQL сървър?

  2. Как да архивирате Sql база данни програмно в C#

  3. Ms SQL geography.STDistance връща грешно разстояние

  4. DEGREES() Примери в SQL Server

  5. Тези две заявки еднакви ли са - GROUP BY срещу DISTINCT?