sql - Oracle中无网络传输的真实查询执行时间

标签 sql oracle select oracle-sqldeveloper

是否可以无需通过网络传输数据来确定 SELECT 执行时间?

我正在尝试优化远程服务器上的查询,该服务器实际上距离我大约 1000 英里,即使获取少量数据也需要几分钟才能到达这里。

SQL Developer 告诉我执行时间,其中包括网络传输时间。与“设置计时”情况相同。

我对 SELECT * FROM v$sql(area) 的结果感到非常困惑。 即使更改执行的查询,此结果仍然相同。 Oracle 文档提到 ELAPSED_TIME 列,它包括解析/执行/获取时间,并且这些结果以某种方式累积。

那么问题来了:有没有什么直接的方法可以获取服务器上查询的实际执行时间?没有网络传输时间,无论查询是否被缓存。没有平均值,没有估计。只是具体一次查询执行的时间。

提前致谢

最佳答案

Oracle 查询执行采用生产者-消费者设计模式。如果网络连接“卡住”,则 Oracle session 进程会被操作系统阻止。为了避免网络延迟的影响,您必须直接在数据库服务器上执行SQL查询(通过sqlplus或通过PL/SQL)。

建议: 忘记时间作为优化指标 - 查看缓冲区获取和磁盘读取,这将告诉您在评估查询时必须处理多少内存页。该指标对于当前数据库服务器负载是不变的(独立)。

如果网络往返产生大量开销,请尝试更改接口(interface)。通过使用集合、嵌套表或复杂类型,您可以减少网络等待量。

关于sql - Oracle中无网络传输的真实查询执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20284135/

相关文章:

Mysql 在子选择中使用 GROUP_CONCAT

php - 如何统计Mysql中特定行中具有相同值的列?

oracle - 如何检查列值是否在 PL/SQL BEFORE UPDATE 触发器中显式指定?

Oracle Jar 在 Maven 打包中导致警告

SQL to_char货币格式

mysql - 未正确加入

mysql - 安全执行用户提交的sql

sql - 使用 union all 概念时的小数位问题

php - 用斜杠查询

sql - 选择起始线,其中 geom 返回不同的 geom