Si 100 usuarios solicitaran 100 archivos de 100 Mb (almacenados a través de FILESTREAM) dentro de una ventana de 10 segundos, ¿el rendimiento de SQL Server 2008 se ralentizaría al máximo?
¿En qué tipo de servidor? ¿Qué tipo de hardware para servir esos archivos? ¿Qué tipo de discos, red, etc.? Tantas preguntas.......
Hay una entrada de blog muy buena de Paul Randal en SQL Server 2008:rendimiento de FILESTREAM - Échale un vistazo. También hay un documento técnico de 25 páginas en FILESTREAM disponibles, que también cubren algunos consejos de ajuste de rendimiento.
Pero también consulte el informe técnico de Microsoft Research To BLOB or Not To BLOB .
Es un artículo muy profundo y muy bien fundamentado que pone a prueba todas esas preguntas.
Su conclusión:
Entonces, a juzgar por eso, si sus blobs suelen tener menos de 1 MB, simplemente guárdelos como VARBINARY (MAX) en la base de datos. Si normalmente son más grandes, solo la función FILESTREAM.
No me preocuparía tanto por el rendimiento en lugar de otros beneficios de FILESTREAM sobre el almacenamiento "no administrado" en una carpeta de archivos NTFS:almacenar archivos fuera de la base de datos sin FILESTREAM, no tiene control sobre ellos:
- sin control de acceso proporcionado por la base de datos
- los archivos no forman parte de su copia de seguridad de SQL Server
- los archivos no se gestionan de forma transaccional, p. podría terminar con archivos "zombie" a los que ya no se hace referencia en la base de datos, o entradas "esqueléticas" en la base de datos sin el archivo correspondiente en el disco
Esas funciones por sí solas hacen que valga la pena usar FILESTREAM.