SQL Server FileStream中的缓冲池

时间:2017-09-19 20:21:25

标签: sql-server sql-server-2014 filestream sql-server-2016

FileStream的最佳功能之一是:The SQL Server buffer pool is not used; therefore, this memory is available for query processing.

我遇到了一个问题,如果我从FileStream表创建返回文件的存储过程,是否会使用SQL Server缓冲池?是否可以利用FileStreamT-SQL和SP的优势?

谢谢

2 个答案:

答案 0 :(得分:2)

如果使用GET_FILESTREAM_TRANSACTION_CONTEXT sql缓冲池不使用。

  

使用托管API访问FILESTREAM数据

     

使用Win32 Streaming访问FILESTREAM数据有很多   使用TSQL访问它的优势。访问FILESTREAM时   使用TSQL的数据,SQL Server读取FILESTREAM数据的内容   文件并将其提供给客户端。 SQL Server内存用于   读取数据文件的内容。使用访问FILESTREAM数据   Win32 Streaming不使用SQL Server内存。另外它允许   应用程序利用的流媒体功能   NT文件系统。

     

虽然使用Win32 Streaming访问FILESTREAM数据有多个   优点,与语法相比,使用起来有点复杂   需要从TSQL访问它。客户端应用程序可以访问之前   在FILESTREAM数据中,它需要找出那条逻辑路径   唯一标识FILESTREAM数据存储中的给定文件。这个   可以通过使用FILESTREAM列的“PathName”方法来实现。   请注意,PathName()函数是区分大小写的。下列   示例显示如何检索与之关联的PathName()   FILESTREAM列的数据。   https://www.red-gate.com/simple-talk/sql/learn-sql-server/an-introduction-to-sql-server-filestream/

使用缓冲池进行测试,而读数据使用计数器

SQLServer:Buffer Manager \ Extension页面写入/秒

SQLServer:Buffer Manager \ Extension页面读取/秒

答案 1 :(得分:0)

如果您只读取/写入数据,则不会获得任何性能优势,因为您只会将数据从Sql客户端传输到文件系统,然后通过其他节点(SQL Server)传输。但它允许统一您的数据存储并使用单一方法来存储您的不同数据(关系数据与否)。当然,如果要在SQL Server中一起处理不相关的数据和关系数据,您将获得优势。