Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Desempenho do SQL Server 2008 FILESTREAM


Se 100 usuários solicitassem 100 arquivos de 100 Mb (armazenados via FILESTREAM) em uma janela de 10 segundos, o desempenho do SQL Server 2008 seria lento para um rastreamento?

Em que tipo de servidor?? Que tipo de hardware para servir esses arquivos? Que tipo de discos, rede etc.?? Tantas perguntas.......

Há uma postagem de blog muito boa de Paul Randal em SQL Server 2008:Desempenho FILESTREAM - Confira. Há também um whitepaper de 25 páginas sobre FILESTREAM disponível - também abrangendo algumas dicas de ajuste de desempenho.

Mas também confira o Microsoft Research TechReport To BLOB or Not To BLOB .

É um artigo muito profundo e muito bem fundamentado que coloca todas essas questões em seu ritmo.

A conclusão deles:

Então, a julgar por isso - se seus blobs são tipicamente menores que 1 MB, apenas armazene-os como VARBINARY(MAX) no banco de dados. Se eles são normalmente maiores, então apenas o recurso FILESTREAM.

Eu não me preocuparia tanto com o desempenho em vez de outros benefícios do FILESTREAM sobre o armazenamento "não gerenciado" em uma pasta de arquivos NTFS:armazenando arquivos fora do banco de dados sem FILESTREAM, você não tem controle sobre eles:
  • nenhum controle de acesso fornecido pelo banco de dados
  • os arquivos não fazem parte do backup do SQL Server
  • os arquivos não são tratados de forma transacional, por exemplo, você pode acabar com arquivos "zumbi" que não são mais referenciados no banco de dados, ou entradas "esqueleto" no banco de dados sem o arquivo correspondente no disco

Esses recursos por si só fazem valer a pena usar FILESTREAM.