Existem poucas implicações de desempenho, rowversion é apenas um novo nome para o antigo tipo de dados timestamp. Portanto, seu banco de dados precisará armazenar o campo binário adicional. Seu desempenho sofrerá muito mais quando você tentar fazer consultas nesses dados como:
SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion
Que é a maneira comum que pode ser usada para obter a lista de itens atualizados desde a última @rowVersion. Isso parece bom e funcionará perfeitamente para uma tabela com, digamos, 10.000 linhas. Mas quando você chegar a 1 milhão de linhas, descobrirá rapidamente que ele sempre fez uma varredura de tabelas e seu desempenho foi atingido porque sua tabela agora não cabe mais inteiramente na RAM do servidor.
Este é o problema comum encontrado com o
rowVersion
coluna, ela não é indexada magicamente por conta própria. Além disso, quando você indexa uma coluna rowVersion, você precisa aceitar que o índice geralmente ficará muito fragmentado ao longo do tempo, porque os novos valores atualizados sempre estarão na parte inferior do índice, deixando lacunas em todo o índice à medida que você atualiza os itens existentes . Edit:Se você não vai usar o
rowVersion
campo para verificar itens atualizados e, em vez disso, você o usará para consistência para garantir que o registro não seja atualizado desde a última leitura, então esse será um uso perfeitamente aceitável e não terá impacto. UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersion