performance - enable - Rendimiento de FILESTREAM de SQL Server 2008
filetable sql server (2)
Leer un FILESTREAM sobre Win32 es bastante rápido. Consulte Administración de datos de FILESTREAM mediante Win32 . Sin embargo, debe seguir las mejores prácticas de FILESTREAM . Después de todo, esto es lo que los poderes Sharepoint y MS no apostarían por algo tan importante como Office (== Sharepoint) en el almacenamiento sin rendimiento. Hay algunos estudios de casos y documentos técnicos sobre FILESTREAM. Solo pude extraer el Análisis de Combustibles Electrónicos de Fórmula Uno de Laren Electronics con SQL Server, pero sé que hay más con datos numéricos más detallados. Si recuerdo correctamente, muestra que FILESTREAM en general sombrea el rendimiento de SMB en un factor de aproximadamente el 90-95%, sobre un determinado tamaño de archivo. Para archivos pequeños, la sobrecarga de obtener el controlador de API FILESTREAM comienza a aparecer.
También recomendaría a Marc que lea el artículo de Investigación sobre el tema (también hay una entrevista de Channel 9 con Catharine van Ingen, disponible también en los podcasts de iTunes, donde habla sobre este trabajo), pero tenga en cuenta que el documento se publicó en 2006 antes de que se lanzara oficialmente FILESTREAM, por lo que no considera los detalles de FILESTREAM.
En cuanto a su segunda pregunta, preguntar por el rendimiento al solo especificar la carga y no la capacidad del sistema no tiene sentido. Un Superdome de 128 CPU con una gran cantidad de SAN de almacenamiento ni siquiera notará tu carga. Una ejecución de SQL en una computadora portátil de 256 MB con una gran cantidad de software espía ni siquiera verá su carga ...
Tuve algunas preguntas sobre la capacidad de FILESTREAM de SQL Server 2008.
¿Cuál sería la diferencia en el rendimiento de devolver un archivo transmitido desde SQL Server 2008 utilizando la capacidad FILESTREAM en lugar de acceder directamente al archivo desde un directorio compartido?
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 disminuiría a un rastreo?
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 disminuiría a un rastreo?
¿En qué tipo de servidor? ¿Qué tipo de hardware para servir esos archivos? ¿Qué tipo de discos, red etc.? Muchas preguntas.......
Hay una muy buena publicación de blog 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 disponible, que también incluye algunos consejos de ajuste de rendimiento.
Pero también echa un vistazo a Microsoft Research TechReport To BLOB o Not To BLOB .
Es un artículo muy profundo y muy bien basado que pone a prueba todas esas preguntas.
Su conclusión:
El estudio indica que si los objetos son más grandes que un megabyte en promedio , NTFS tiene una clara ventaja sobre SQL Server. Si los objetos tienen menos de 256 kilobytes, la base de datos tiene una clara ventaja . Dentro de este rango, depende de la intensidad de escritura de la carga de trabajo y de la antigüedad de almacenamiento de una réplica típica en el sistema.
Así que a juzgar por eso, si sus blobs suelen ser menos de 1 MB, simplemente guárdelos como un VARBINARIO (MAX) en la base de datos. Si son típicamente más grandes, entonces solo la característica FILESTREAM.
No me preocuparía tanto 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, usted no tiene control sobre ellos:
- no hay 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 manejan de forma transaccional, por ejemplo, podría terminar con archivos "zombies" a los que ya no se hace referencia desde la base de datos, o entradas "esqueleto" en la base de datos sin el archivo correspondiente en el disco
Esas características solo hacen que valga la pena usar FILESTREAM.