Joh*_*ore 16 performance filestream sql-server-2008 sqlfilestream
我对SQL Server 2008的FILESTREAM功能有一些疑问.
使用FILESTREAM功能返回从SQL Server 2008流式传输的文件与直接从共享目录访问文件的性能差异是什么?
如果100个用户在10秒窗口内请求100个100Mb文件(通过FILESTREAM存储),SQL Server 2008的性能是否会慢慢爬行?
mar*_*c_s 23
如果100个用户在10秒窗口内请求100个100Mb文件(通过FILESTREAM存储),SQL Server 2008的性能是否会慢慢爬行?
在什么样的服务器?什么样的硬件来提供这些文件?什么样的磁盘,网络等?这么多的问题.......
Paul Randal在SQL Server 2008上发布了一篇非常好的博客文章:FILESTREAM Performance - 查看它.还有一篇关于FILESTREAM的25页白皮书 - 还包括一些性能调优技巧.
但也请查看Microsoft Research TechReport To BLOB或Not To BLOB.
这是一篇非常深刻且基础非常好的文章,通过他们的步伐提出所有这些问题.
他们的结论:
该研究表明,如果对象平均大于1兆字节,NTFS具有明显优于SQL Server的优势.如果对象 低于256千字节,则数据库具有明显的优势.在此范围内,它取决于工作负载的写入密集程度以及系统中典型副本的存储时间.
因此判断 - 如果您的blob通常小于1 MB,只需将它们存储为数据库中的VARBINARY(MAX)即可.如果它们通常较大,则只有FILESTREAM功能.
我不担心性能而不是FILESTREAM的其他好处而不是NTFS文件夹中的"非托管"存储:在没有FILESTREAM的情况下将文件存储在数据库之外,你无法控制它们:
单独使用这些功能使得使用FILESTREAM绝对值得.
通过Win32读取FILESTREAM非常快.请参阅使用Win32管理FILESTREAM数据.您应该遵循FILESTREAM最佳实践.毕竟,这就是Sharepoint和MS不会对Office(== Sharepoint)在不良性能存储上打赌的重要性.有关FILESTREAM的一些案例研究和白皮书,我只能用SQL Server挖掘一级方程式赛车数据的拉伦电子燃料分析,但我知道有更多更详细的数值数据.如果我没记错的话,它表明FILESTREAM通常会在一定的文件大小下影响SMB性能约90-95%.对于小文件,开始显示获取FILESTREAM API句柄的开销.
我也是第二个Marc推荐阅读关于这个主题的研究论文(还有一个Channel 9采访Catharine van Ingen,也可以在iTunes播客上获得,她会谈到这项工作),但请记住这篇论文在 FILESTREAM正式发布之前于2006年发布,因此它不考虑FILESTREAM细节.
至于你的第二个问题,仅通过指定负载而不是系统的容量来询问性能是没有意义的.具有大量存储SAN的128 CPU Superdome甚至不会注意到您的负载.在拥有大量间谍软件的256 MB笔记本电脑上运行的SQL甚至无法看到你的负载......