当前位置: 首页 > 知识库问答 >
问题:

使用jdbc setfetchsize时oracle服务器中的内存使用情况

赵明亮
2023-03-14

例如,当我对select语句使用setFetchSize()方法时

select * from tablename

oracle JDBC驱动程序中的大型表。它实际上限制了JDBC客户端的内存使用。

然而,我好奇的是,该语句是否会导致oracle server将所有行存储在服务器内存中,而忽略获取大小,从而导致oracle server上出现OutOfMemory错误?

共有1个答案

咸晨
2023-03-14

然而,我好奇的是,该语句是否会导致oracle server将所有行存储在服务器内存中,而忽略获取大小,从而导致oracle server上出现OutOfMemory错误?

不,Oracle在处理游标(选择)时不会一次在内存中获取特定表的所有行。Oracle具有复杂且安全的架构。Oracle有许多评估表的标准:“大”或“小”。

当正常使用游标(sql引擎)时,将无法在服务器进程上获取 OutOfMemory。

例如,如果您的服务器端代码通过pl / sql集合处理数据,您可以从服务器进程获取数据,而无需指定检索行的限制,如果服务器进程达到PGA限制(PGA_AGGREGATE_LIMIT),该进程将崩溃(在该进程占用的所有资源被释放之后)。

这个主题并不简单,从一篇文章中解释数据库机制的角度)

如果有兴趣更详细了解的话,那么我觉得下面的链接可能会有用。

其他链接:

SQL处理

使用游标

Oracle关系数据结构

Oracle数据访问

甲骨文数据库存储结构

过程架构

 类似资料:
  • 问题内容: 我在此处粘贴一些代码,这些代码使用boost iostream进行mmap并写入映射的文件: 当我在具有8个处理器和16GB RAM的centos 6机器上执行此操作时,我观察到以下内容: 当将数据插入到内存映射文件中时,RES(来自顶部命令)不断增加,直到14GB。我的印象是,当我映射文件时,VIRT将增加而不是RES。那么当我们写入mmap文件时,是先将其写入内存,然后再提交到磁盘

  • 我们通过云服务提供商(CSP)订阅了Azure,这对我们可以在Azure中获取和看到的内容造成了一些限制。尽管如此,我们可以看到每个应用服务计划的CPU和内存使用率。 我们如何在计划下看到特定应用服务的相同情况? 如果我看到计划的CPU/内存利用率异常,如何判断是哪个应用服务导致的?

  • 问题内容: 我们发生内存泄漏,这导致节点服务器的进程内存不足。有什么建议/工具可以帮助我们进行调试? 问题答案: 您是否正在运行最新最好的node.js v0.3.8? 但我相信您可以使用https://github.com/dannycoates/node- inspector 检测泄漏。

  • 问题内容: 我正在尝试跟踪处理URL的脚本的内存使用情况。基本思想是在将另一个URL添加到cURL多处理程序之前,检查是否存在合理的缓冲区。我正在使用“滚动cURL”概念,该概念在多处理程序运行时处理URL数据。这意味着我可以在每次处理和删除现有URL时通过从池中添加新URL来保持N个连接处于活动状态。 我已经使用了一些积极的结果。添加该标志很有帮助(虽然并不清楚“系统”内存和“ emalloc”

  • 问题内容: 扩展基类时,Java中的内存使用情况如何。 子类是否包含基类的实例(具有其自身的开销和全部开销),还是仅具有其自身的16字节的开销? 那么,更具体地说,Bar实例的内存使用量是多少? 是吗 要不就 问题答案: 没有双重开销。 Java将采用该类,超类,计算所有字段所需的空间,并为一个实例分配所需的空间。 仅从内存的角度来看,根本不存在超类的概念,有Foo的实例仅需要一个int的内存,而

  • 问题内容: 我正在使用Linux,go和os /exec运行一些命令。我想知道一个进程的实时内存使用情况。这意味着我可以在启动进程后的任何时间(而不是在运行之后)随时请求内存使用情况。 (这就是为什么在回答测量使用golang可执行文件运行的内存使用量是 不是 一种选择对我来说) 例如: 我不需要非常精确的值,但是如果它的错误范围小于10兆字节,那就太好了。 有没有办法做到这一点,或者我需要某种命