3

尝试在 Oracle 数据库中执行视图对象时遇到一个不寻常的问题。查询本身使用 Toad for Oracle 在 10 秒内执行,而在视图对象中执行相同查询则需要一分钟以上。我正在使用带有 ADF 的 JDeveloper 10.1.3.3.0.4157,并且正在连接到 10g Oracle 数据库。

我发现在执行过程中,数据库服务器不断被 128 字节的数据“ping”(我使用 Wireshark 完成了这项工作)。这反过来又会阻塞连接,这也是数据需要很长时间才能到达应用程序的原因。我已经用会话跟踪测试了这个理论,结果证明查询本身与 Toad 的查询在同一时间范围内执行。

我想问题出在数据库驱动程序的某个地方,但是由于我无法调试它,所以我两手空空。

任何建议将不胜感激!

更多信息:

有问题的查询有点大。它也是在运行时构建的并且是可变的(但是,属性的​​数量、名称和类型是恒定的)。有趣的是,当查询很小(呃)时,执行时间会下降到 Toad 执行中存在的时间。

在属于同一应用程序模块的另一个视图中检测到类似的“ping”效果,但测试表明这不是 AM 配置的问题,因为它与所有其他配置相同,并且工作正常。此外,与所讨论的查询相同的 AM 中的其他视图没有显示任何相同问题的迹象。

我一直在玩视图调整设置,但执行时间没有区别。

4

1 回答 1

1

尝试将您的视图查询创建为数据库视图。然后在该视图上创建视图对象并使用视图标准来塑造数据。只有简单的 select * from complex_view 会在 ViewObject 中。您也可以尝试物化该数据库视图以提高性能。

于 2012-11-08T12:57:09.527 回答