FileStream
的最佳功能之一是:The SQL Server buffer pool is not used; therefore, this memory is available for query processing.
我遇到了一个问题,如果我从FileStream
表创建返回文件的存储过程,是否会使用SQL Server缓冲池?是否可以利用FileStream
与T-SQL
和SP的优势?
谢谢
答案 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中一起处理不相关的数据和关系数据,您将获得优势。