Oracle SQL Developer的结果是按需加载网格

时间:2014-06-02 10:34:49

标签: performance oracle oracle-sqldeveloper

如果从SQL Management Studio发送查询,通常会添加等效的where rownum < 10,以防止将大量结果表加载到结果网格中。

在Oracle的SQL Developer中,这不是必需的。只有在您继续滚动时才会填充网格。如果不中断连接,您可以查询一天并在第二天开始滚动。

似乎Oracle在长时间内维持一个可以懒散地访问结果的状态的实现对客户端来说并不重要。

在某些情况下服务器上是否很重?

2 个答案:

答案 0 :(得分:1)

您应该了解Oracle如何实现其读取一致性。结合Oracle驱动程序在幕后客户端进行一些缓存的事实就是你所看到的。链接:Data Concurrency and Consistency

在Oracle没有立即加载所有数据的意义上,前端并不重要。如果您同时进行大量未处理的大型查询,则可能会对服务器造成负担。

答案 1 :(得分:0)

服务器上的重量不会很大(即只是像任何其他工具一样运行查询)。从客户端加载到网格中的数据越多,它将消耗的客户端内存越多,客户端就越重。您可以使用任务管理器在Windows PC上轻松检查。打开任务管理器并选择进程选项卡,然后找到您的SQL Developer进程,例如 enter image description here

现在开始在大型表格上滚动数据网格结果。如果你回到任务管理器,你会发现SQL Developer的内存使用率已经上升。

如果你敢,请在数据网格中按Ctrl + End,它会一直滚动到最后(这可能需要一些时间)。监视任务管理器中的内存使用情况,它会不时地跳起来。

我刚刚这样做了,我想如果我关闭了数据网格选项卡,内存就会被释放,但事实并非如此(尽管它可能标记为垃圾收集 - 我不知道不知道。如果我然后在另一个表上打开数据网格并滚动浏览,内存使用继续向上(我到目前为止已达到750MB,网格仍在滚动...)

关闭网格之后,最终可能会释放内存(我会在发现时报告回来),但最好还是关闭SQL Developer并在执行此操作后重新启动。

<强>更新 一旦我的查询完成,内存使用量高达900MB。然后我关闭了数据网格,内存立即下降到892MB(即不多)。然后我离开它15分钟,用我的电脑完成其他任务; SQL Dev的内存使用率保持不变。因此,在数据网格中执行非常大的查询后,最好关闭并重新启动SQL Dev。