oracle - oracle服务器使用jdbc setfetchsize时的内存使用情况
问题描述
例如,当我对 select 语句使用 setFetchSize() 方法时
从表名中选择 *
对于 oracle JDBC 驱动程序中的大表。它实际上限制了 JDBC 客户端中的内存使用。
但是,我很好奇的是,此语句是否会导致 oracle 服务器将所有行存储在服务器内存中,而忽略导致 Oracle 服务器上出现 OutOfMemory 错误的提取大小?
解决方案
但是,我很好奇的是,此语句是否会导致 oracle 服务器将所有行存储在服务器内存中,而忽略导致 Oracle 服务器上出现 OutOfMemory 错误的提取大小?
不,处理游标(选择)的 Oracle 不会一次在内存中获取特定表的所有行。Oracle 拥有复杂而安全的架构。Oracle 有许多评估表的标准:“大”或“小”。
正常使用游标(sql引擎)时,服务器进程将无法获取OutOfMemory。
例如,如果你的服务器端代码通过pl/sql集合处理数据,你可以从你的服务器进程中获取数据而无需指定检索行的限制,如果服务器进程达到PGA限制(PGA_AGGREGATE_LIMIT),该进程将崩溃(在进程占用的所有资源将被释放之后)。
这个主题不简单,从一篇文章解释数据库机制的角度来看)
如果有兴趣更详细地了解,那么我认为以下链接可能有用。
附加链接:
推荐阅读
- excel - 将 SHA 256 移植到 Excel。一个问题:参数为二进制,而不是 ASCII
- c++ - 为什么C++中的大括号初始化解决了STL容器的初始化问题?
- sql-server - 将 260 表从 ingres 迁移到 SQL Server
- python - 如何使循环更有效
- python - 熊猫合并目前有什么问题吗?
- laravel - Kyslik/column-sortable 不适用于 withCount
- python - Pandas 为什么索引禁止对数据帧进行某些操作(例如 loc 导致 IndexingError :)
- spring-boot - Spring Boot - 无法连接 Azure MySQL 数据库
- postgresql - 在 Rails 中对库存进行分组和计数
- cookies - 通过图像在外部域上设置cookie,似乎不起作用