[SQL Filestream] Tamanho dos arquivos e whitepaper

Antes de começar, vamos ao whitepaper... Enquanto eu estava escrevendo um artigo sobre Filestream (quando for publicado eu aviso a todos) o Paul Randal havia anunciado que em breve seria publicado um whitepaper sobre o assunto. Recentemente ele saiu do forno com o título: FILESTREAM Storage in SQL Server 2008 (https://msdn.microsoft.com/en-us/library/cc949109.aspx).

No meu último post sobre o recurso Filestream no SQL Server, eu recebi um comentário bem interessante. Ao invés de responder lá mesmo (onde quase ninguém vê), resolvi escrever um post sobre o assunto.

Comentário: "Fiquei muito animado quando descobri o recurso de filestream no SQL Server 2008, porém fiquei com a pulga atrás da orelha quando vi uma documentação do SQL Server (que a esta altura não vou lembrar onde foi) afirmando que para blobs muito grandes ainda seria mais vantajoso utilizar um campo blob do que um filestream.
Isso me deixou na dúvida de até onde vale a pena usar filestream ou não..."

Particularmente eu desconheço a afirmação sobre o filestream ser ruim para blobs muito grandes. Mas quando falamos sobre blobs bem pequenos, aí a observação faz todo sentido. Explico:

No eterno debate de quando armazenar o seu arquivo binário no banco de dados ou colocá-lo no sistema de arquivos e manter uma referência no banco de dados, os profissionais normalmente deveriam levar em conta aspectos como manutenção, implantação e desempenho. Para ajudar neste último quesito, um artigo do Jim Gray e Cia. servia de embasamento: To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem? (https://research.microsoft.com/research/pubs/view.aspx?msr_tr_id=MSR-TR-2006-45). Em linhas gerais o artigo diz que para arquivos menores que 256 KB é mais eficiente armazená-los no banco de dados, enquanto arquivos maiores de 1 MB é melhor utilizar o sistema de arquivos. Arquivos entre esses valores caem em uma zona cinzenta e ainda existem outras considerações, como fragmentação dos dados, leitura e escrita.

Para comprovar que o artigo estava certo, podemos ver no whitepaper do Paul a figura 1, que mostra um ganho de performance do filestream com arquivos maiores de 1MB.

Então devemos levar em conta se usamos ou não o recurso do filestream com arquivos bem pequenos, lembrando que junto com o filestream você ainda têm outros ganhos de manutenção e implantação do seu banco de dados, que podem valer mais do que essa diferença de desempenho, certo?

Agora, se você estiver usando o recurso de Filestream e não acessar os seus dados da melhor maneira, pode pagar um preço alto na utilização da memória... Mas isso fica para um próximo post que já está saindo do forno!

 

[]s
Luciano Caixeta Moreira
luciano.moreira@microsoft.com
===============================================
This post is provided "AS IS" and confers no right
===============================================