CommandBehavior.SequentialAccess 是否有任何性能提升?

2024-04-28

我意识到我总是按照索引返回的顺序读取字段(使用常量)。所以据我所知,我的代码已经与 CommandBehavior.SequentialAccess 兼容。

如果我打开它会有什么好处吗? DataReader 已经是只向前,只读,这才是真正的性能增益,对吗?


它的主要用途是当您读取非常大的 CLOB (nvarchar(max)等)或 BLOB(varbinary(max)) 字段。在默认用法中,它会先缓冲整行数据,然后再让您靠近它 - 这可能意味着它必须为任何 BLOB / CLOB 字段分配一个大缓冲区。当使用顺序模式时,不缓冲该行;您可以对小字段使用常规 API(只要您以正确的顺序访问它们),但对于 CLOB / BLOB 字段,您可以使用基于块的 API(GetBytes http://msdn.microsoft.com/en-us/library/system.data.idatarecord.getbytes(v=vs.110).aspx and GetChars http://msdn.microsoft.com/en-us/library/system.data.idatarecord.getchars(v=vs.110).aspx) 依次访问数据的一部分。例如,通过这样做,您可以仅使用 1k 或 4k 缓冲区来处理 40 MB 的图像。

MSDN也是这么说的 http://msdn.microsoft.com/en-us/library/system.data.commandbehavior(v=vs.110).aspx

为 DataReader 提供一种处理包含具有较大二进制值的列的行的方法。 SequentialAccess 使 DataReader 能够以流的形式加载数据,而不是加载整行。然后,您可以使用 GetBytes 或 GetChars 方法指定启动读取操作的字节位置,以及返回数据的有限缓冲区大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CommandBehavior.SequentialAccess 是否有任何性能提升? 的相关文章

随机推荐