在.Net中从Oracle获取clob字段时性能不佳

在.Net中从Oracle获取clob字段时性能不佳,.net,oracle,odp.net,clob,devart,.net,Oracle,Odp.net,Clob,Devart,我试图在.Net中阅读oracle的clob专栏,发现性能非常差,网络流量很大 我尝试了ODP+OCI、devArt+OCI方法来访问数据,结果相同——在数据读取器中获取1000行并读取每行的clob值大约需要20秒 检查wireshark跟踪发现,每次我尝试读取读卡器中单个行的clob字段时,都会在客户端和服务器之间发送额外的多个tcp数据包。因此,对于1000行,这比仅查询一行要慢1000倍 同时,如果我在SQLDeveloper中运行相同的查询(我相信它使用瘦jdbc驱动程序而不是oci)

我试图在.Net中阅读oracle的clob专栏,发现性能非常差,网络流量很大

我尝试了ODP+OCI、devArt+OCI方法来访问数据,结果相同——在数据读取器中获取1000行并读取每行的clob值大约需要20秒

检查wireshark跟踪发现,每次我尝试读取读卡器中单个行的clob字段时,都会在客户端和服务器之间发送额外的多个tcp数据包。因此,对于1000行,这比仅查询一行要慢1000倍

同时,如果我在SQLDeveloper中运行相同的查询(我相信它使用瘦jdbc驱动程序而不是oci),我会立即得到结果,包括clob值。它不尝试为每一行查询clob,而是一次完成所有查询

但是我没有看到.net的瘦客户端。我怎样才能加快速度?请帮忙


编辑:我的字段类型实际上是存储为clob的XMLTYPE,而不是真正的clob。对1000行使用getClobVal可以将结果提高50%到10秒。但与此同时,Sql Developer将立即返回结果,而不是在10秒钟内。

您已经正确地观察到Oracle延迟了LOB的检索。因此,应用程序的性能受到网络往返时间的限制


使用
OracleCommand
类的
InitialLOBFetchSize
属性(在ODP.NET中,请参见),您可以告诉Oracle在初始检索行时检索部分LOB。如果你的高球不是太长,这会有很大的不同。

谢谢,我昨天也在看,但对我来说没有什么不同。事实上,我在我的消息中不是很诚实——我们将XmlType字段存储为clob,而不是直接的clob,这可能是造成问题的原因。我也尝试过通过它调用getClobVal,它可以提高50%的性能,但对于1000行,这只需要10秒,而SQL Developer几乎可以立即获取5000行。您解决过这个问题吗?您是否向供应商记录了支持请求?