2009-12-29 41 views
16

tenía algunas preguntas en torno a la capacidad de FILESTREAM de SQL Server 2008.SQL Server 2008 el rendimiento de FILESTREAM

  1. ¿Cuál sería la diferencia de rendimiento es de devolver un archivo de largada desde SQL Server 2008 utilizando el vs. capacidad de FILESTREAM acceder directamente al archivo desde un directorio compartido?

  2. Si 100 usuarios solicitaron 100 archivos de 100Mb (almacenados a través de FILESTREAM) en una ventana de 10 segundos, ¿el rendimiento de SQL Server 2008 se ralentizaría?

+0

Creo que su rendimiento de lectura será comparable a un directorio compartido común. Sin embargo, su rendimiento de inserción/actualización puede variar dramáticamente dependiendo de su carga de trabajo b/c SQL Server mantiene la integridad transaccional con los archivos. Definitivamente agregaría insertar/actualizar/eliminar a su lista de pruebas –

Respuesta

23

Si 100 usuarios solicitaron 100 archivos de 100Mb (almacenada a través de FILESTREAM) dentro de una segunda ventana 10, sería de rendimiento de SQL Server 2008 a paso de tortuga?

¿En qué tipo de servidor? ¿Qué tipo de hardware servir esos archivos? ¿Qué tipo de discos, red, etc.? Tantas preguntas .......

Hay una muy buena publicación de Paul Randal en SQL Server 2008: FILESTREAM Performance - compruébalo. También hay un 25-page whitepaper on FILESTREAM disponible, que también cubre algunos consejos de ajuste del rendimiento.


Pero también echa un vistazo a la Investigación TechReport Microsoft To BLOB or Not To BLOB.

Es un artículo muy profundo y muy bien basado que puso todas esas preguntas a su alcance.

Su conclusión:

El estudio indica que si los objetos son más grande que un megabyte en promedio, NTFS tiene una clara ventaja sobre SQL Server. Si los objetos son en 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 edad de almacenamiento de una réplica típica de en el sistema.

Por lo tanto, a juzgar por eso, si sus blobs son generalmente menos de 1 MB, simplemente guárdelos como VARBINARIO (MÁXIMO) en la base de datos. Si son generalmente más grandes, solo la característica FILESTREAM.

no me preocupe tanto de rendimiento más que otros beneficios de más de FILESTREAM de almacenamiento "no administrado" en una carpeta de archivos NTFS: el almacenamiento de archivos fuera de la base de datos sin FILESTREAM, que no tiene control sobre ellos:

  • sin control de acceso proporcionado por la base de datos
  • los archivos no son parte de su copia de seguridad de SQL Server
  • los archivos no se manejan transaccionalmente, por ejemplo usted podría terminar con los archivos "zombi", que no se hace referencia a partir de la base de datos más o entradas de "esqueleto" en la base de datos sin el archivo correspondiente en el disco

Esas características por sí solas hacen que sea absolutamente vale la pena utilizar FILESTREAM.

+0

+ que el documento que estaba tratando de recordar "Almacenamiento FILESTREAM en SQL Server 2008" –

+0

Gracias por la respuesta. Si un sitio web accede a los archivos de FILESTREAM a través de la API de transmisión, ¿qué configuración debe realizarse en el firewall para habilitar ese tráfico? Ahora mismo abrimos el puerto 1433, pero eso es todo. –

+1

"Para BLOB o no para BLOB" se basó en SQL Server 2005. Es un documento excelente, pero esos resultados son irrelevantes para una discusión sobre el rendimiento de FILESTREAM. En particular, no puede extrapolar los umbrales de 256KB/1MB a SQL Server 2008. Remus menciona esto a continuación. – jmetcher

7

Leer un FILESTREAM sobre Win32 es bastante rápido. Ver Managing FILESTREAM Data by Using Win32. Sin embargo, debes seguir el FILESTREAM best practices. Después de todo, esto es lo que powers Sharepoint y MS no apostarían a algo tan importante como Office (== Sharepoint) en el almacenamiento sin rendimiento. Hay algunos estudios de casos y libros blancos en FILESTREAM, solo pude encontrar Laren Electronics Fuels Analysis of Formula One Racing Data with SQL Server pero sé que hay más con datos numéricos más detallados. Si recuerdo correctamente, muestra que FILESTREAM, en general, reduce el rendimiento de SMB en aproximadamente un 90-95% de factor, en un determinado tamaño de archivo. Para archivos pequeños, comienza a aparecer la sobrecarga para obtener el identificador API FILESTREAM.

También recomendaría leer el artículo de investigación sobre el tema (también hay una entrevista de Channel 9 con Catharine van Ingen, también disponible en los podcasts de iTunes, donde habla sobre este trabajo), pero aguanten Tenga en cuenta que el documento se publicó en 2006 antes de FILESTREAM se lanzó oficialmente, por lo que no tiene en cuenta los detalles de FILESTREAM.

En cuanto a su segunda pregunta, preguntar sobre el rendimiento solo especificando 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á su carga. Una ejecución de SQL en una computadora portátil de 256 MB con una montaña de spyware ni siquiera podrá ver su carga ...

+2

+1 que pinta más vívidamente la imagen de la diferencia que tendrá el hardware subyacente hacer :-) –

Cuestiones relacionadas