Ако 100 потребители поискат 100 файла от 100 Mb (съхранени чрез FILESTREAM) в рамките на прозорец от 10 секунди, ще се забави ли производителността на SQL Server 2008 до обхождане?
На какъв сървър?? Какъв вид хардуер да обслужва тези файлове? Какви дискове, мрежа и т.н.?? Толкова много въпроси.......
Има наистина добра публикация в блог от Пол Рандал на SQL Server 2008:Производителност на FILESTREAM - виж това. Има и 25 страници бяла книга във FILESTREAM наличен - също така обхваща някои съвети за настройка на производителността.
Но също така вижте техническия доклад на Microsoft Research За BLOB или не за BLOB .
Това е много задълбочена и много добре базирана статия, която поставя всички тези въпроси през техните стъпки.
Тяхното заключение:
Така че, съдейки по това - ако вашите петна обикновено са по-малко от 1 MB, просто ги съхранявайте като VARBINARY(MAX) в базата данни. Ако обикновено са по-големи, тогава само функцията FILESTREAM.
Не бих се притеснявал толкова много за производителността, отколкото за други предимства на FILESTREAM спрямо „неуправляваното“ съхранение в папка на NTFS файл:съхранявайки файлове извън базата данни без FILESTREAM, вие нямате контрол над тях:
- няма контрол на достъпа, предоставен от базата данни
- файловете не са част от резервното ви копие на SQL Server
- файловете не се обработват транзакционно, напр. може да се окажете с „зомби“ файлове, които вече не са посочени в базата данни, или „скелетни“ записи в базата данни без съответния файл на диска
Само тези функции правят използването на FILESTREAM абсолютно полезно.