Si 100 utilisateurs demandaient 100 fichiers de 100 Mo (stockés via FILESTREAM) dans un délai de 10 secondes, les performances de SQL Server 2008 ralentiraient-elles ?
Sur quel type de serveur ?? Quel type de matériel pour servir ces fichiers ? Quel genre de disques, réseau, etc. ? ? Tant de questions......
Il y a un très bon article de blog par Paul Randal sur SQL Server 2008 :performances FILESTREAM - Vérifiez-le. Il y a aussi un livre blanc de 25 pages sur FILESTREAM disponible - couvrant également certains conseils de réglage des performances.
Mais consultez également le Microsoft Research TechReport To BLOB or Not To BLOB .
C'est un article très profond et très bien fondé qui met toutes ces questions à l'épreuve.
Leur conclusion :
Donc, à en juger par cela - si vos blobs sont généralement inférieurs à 1 Mo, stockez-les simplement en tant que VARBINARY (MAX) dans la base de données. S'ils sont généralement plus volumineux, utilisez uniquement la fonctionnalité FILESTREAM.
Je ne m'inquiéterais pas tant des performances que des autres avantages de FILESTREAM par rapport au stockage "non géré" dans un dossier de fichiers NTFS :stocker des fichiers en dehors de la base de données sans FILESTREAM, vous n'avez aucun contrôle sur eux :
- aucun contrôle d'accès fourni par la base de données
- les fichiers ne font pas partie de votre sauvegarde SQL Server
- les fichiers ne sont pas traités de manière transactionnelle, par ex. vous pourriez vous retrouver avec des fichiers "zombies" qui ne sont plus référencés dans la base de données, ou des entrées "squelettes" dans la base de données sans le fichier correspondant sur le disque
Ces fonctionnalités à elles seules valent vraiment la peine d'utiliser FILESTREAM.