使用 ADF 和 Oracle SQL 执行缓慢的视图

Posted

技术标签:

【中文标题】使用 ADF 和 Oracle SQL 执行缓慢的视图【英文标题】:Slow view execution using ADF and OracleSQL 【发布时间】:2012-10-02 09:02:35 【问题描述】:

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

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

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

任何建议将不胜感激!

更多信息:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于使用 ADF 和 Oracle SQL 执行缓慢的视图的主要内容,如果未能解决你的问题,请参考以下文章

ADF 映射数据流,是不是可以在源上执行 SQL?

使用 ADF 调用存储过程

如何在 SQL 中创建临时表以用于多个 ADF 活动?

Oracle SQL 查询运行缓慢

Oracle ADF在查询组件中将secondaryPattern添加到Date

Oracle数据库连接极度缓慢