在SQL Server 2014
设置为3的情况下运行FilestreamEffectiveLevel
。因此,我可以使用C#
中的SQLFileStream轻松检索文件:
using (var stream = new SqlFileStream(path, transactionContext,
FileAccess.Read, FileOptions.SequentialScan, 0))
{
byte[] data = new byte[stream.Length];
stream.Read(data, 0, data.Length);
}
这样可行,但看起来这段代码会导致网络被标有TCP
标志的PSH
包裹淹没。这实质上意味着TCP缓冲区没有得到有效利用。它不使用1500字节的MTU
,而是使用54字节(空ACK
)或200-300字节。 (我们使用WireShark
进行了一些测试。)
造成这种情况的原因是什么?这是驱动程序问题还是我们需要更改C#
代码以某种方式优化网络利用率?
答案 0 :(得分:0)
原来是代码的另一部分。 SqlFileStream
表现良好。