【问题标题】:Buffer Pool in SQL Server FileStreamSQL Server FileStream 中的缓冲池
【发布时间】:2017-09-19 20:21:25
【问题描述】:
【问题讨论】:
标签:
sql-server
sql-server-2014
filestream
sql-server-2016
【解决方案1】:
如果使用 GET_FILESTREAM_TRANSACTION_CONTEXT sql 缓冲池不使用。
使用托管 API 访问 FILESTREAM 数据
使用 Win32 Streaming 访问 FILESTREAM 数据有许多
比使用 TSQL 访问它的优势。访问 FILESTREAM 时
data 使用 TSQL,SQL Server 读取 FILESTREAM 数据的内容
文件并将其提供给客户。 SQL Server 内存用于
读取数据文件的内容。使用访问 FILESTREAM 数据
Win32 Streaming 不使用 SQL Server 内存。此外它还允许
应用程序利用流媒体功能的优势
NT 文件系统。
虽然使用 Win32 Streaming 访问 FILESTREAM 数据有许多
优点,与语法相比,使用起来有点复杂
需要从 TSQL 访问它。在客户端应用程序可以访问之前
FILESTREAM 数据,它需要找出逻辑路径
唯一标识 FILESTREAM 数据存储中的给定文件。这
可以通过使用 FILESTREAM 列的“PathName”方法来实现。
请注意,PathName() 函数区分大小写。以下
示例显示如何检索与
FILESTREAM 数据的一列。
https://www.red-gate.com/simple-talk/sql/learn-sql-server/an-introduction-to-sql-server-filestream/
用于测试使用缓冲池,同时读取数据使用计数器
SQLServer:Buffer Manager\Extension page writes/sec
SQLServer:Buffer Manager\Extension page reads/sec
【解决方案2】:
如果您只读取/写入数据,您将不会获得任何性能优势,因为您只会将数据从 Sql 客户端传输到文件系统并通过附加节点(SQL Server)返回。但它允许统一您的数据存储并使用单一方法来存储您的不同数据(关系数据或非关系数据)。当然,如果您要在 SQL Server 中同时处理非关系数据和关系数据,您将获得优势。