2009-12-29 111 views
16

我周围的SQL Server FILESTREAM能力2008的SQL Server 2008 FILESTREAM性能

  1. 会在性能上的差异是返回一个文件从什么SQL Server 2008中流传的一些问题使用FILESTREAM能力对比直接从共享目录访问文件?

  2. 如果100个用户请求100个100Mb的文件(通过存储FILESTREAM)10秒窗口内,将SQL Server 2008中的性能慢如蜗牛?

+0

我认为您的读取性能可与常规共享目录相媲美。但是,根据您的工作负载,插入/更新性能可能会发生显着变化。b/c SQL Server通过文件维护事务完整性。我肯定会将插入/更新/删除添加到您的测试列表 – 2009-12-29 21:41:49

回答

23

如果100个用户请求100个100Mb的文件(通过存储FILESTREAM)10秒窗口内,将SQL Server 2008中的性能慢如蜗牛?

什么样的服务器?什么样的硬件来服务这些文件?什么样的磁盘,网络等?这么多的问题.......

有一个非常好的博客文章由保罗·兰德尔上SQL Server 2008: FILESTREAM Performance - 检查出来。还有一个25-page whitepaper on FILESTREAM可用 - 也涵盖了一些性能调整提示。


但也检查了微软研究技术报告To BLOB or Not To BLOB

就这么把所有这些问题通过他们的步伐非常深刻和很好的基础文章。

他们的结论是:

研究表明,如果对象是 超过一兆字节更大的 平均,NTFS有着明显的优势 在SQL Server中。如果对象是 下256千字节,数据库 明显的优势。这里面范围, 这取决于 工作量如何写密集型的,并且在系统中 典型副本的存储时代。

因此,从这个判断 - 如果你的blob通常小于1 MB,只需将它们作为VARBINARY(MAX)存储在数据库中。如果它们通常较大,则只是FILESTREAM功能。

我不会太在乎的表现,而不是在“非托管”存储在NTFS文件夹FILESTREAM的其他好处:存储在数据库之外的文件没有FILESTREAM,你在他们身上没有控制:

  • 没有数据库提供的访问控制
  • 这些文件不是您的SQL Server备份的一部分
  • 这些文件不是事务处理的,例如您可能会收到没有从数据库中引用的“僵尸”文件或数据库中没有相应文件的“骨架”条目

单独使用这些功能使得使用FILESTREAM是绝对值得的。

+0

+我试图记住的白皮书“SQL Server 2008中的FILESTREAM存储” – 2009-12-29 21:59:51

+0

感谢您的回应。如果网站通过流媒体API访问FILESTREAM文件,则必须在防火墙上执行什么配置才能启用该流量?现在我们打开1433港口,但就是这样。 – 2009-12-30 23:38:57

+1

“BLOB or not to BLOB”基于SQL Server 2005.这是一篇很棒的论文,但这些结果与讨论FILESTREAM性能无关。尤其是,您无法推断SQL Server 2008的256KB/1MB阈值。Remus在下面提到了这一点。 – jmetcher 2015-03-18 01:42:12

7

通过Win32读取FILESTREAM相当快。见Managing FILESTREAM Data by Using Win32。但你应该遵循FILESTREAM best practices。毕竟,这是什么powers Sharepoint和MS不会像Office(== Sharepoint)那样在未完成存储上下注。在FILESTREAM周围有一些案例研究和白皮书,我只能挖掘出Laren Electronics Fuels Analysis of Formula One Racing Data with SQL Server,但我知道还有更多更详细的数字数据。如果我记得正确,它表明FILESTREAM通常会将SMB性能降低90-95%,超过某个文件大小。对于小文件,获取FILESTREAM API句柄的开销开始显现。

我还想马克在推荐阅读关于该主题的研究论文(也有一个关于Catharine van Ingen的频道9访谈,也可以在iTunes播客中获得,她在那里谈论这项工作),但忍耐请注意,该论文发布于2006年之前 FILESTREAM已正式发布,因此它不考虑FILESTREAM的具体内容。

至于第二个问题,仅通过指定负载而不是系统容量来询问性能是无意义的。拥有一堆存储SAN的128 CPU Superdome甚至不会注意到您的负载。运行在256 MB笔记本电脑上的SQL运行间谍软件甚至无法看到您的负载...

+2

+1 您更生动地描绘了底层硬件的区别使:-) – 2009-12-29 22:00:53