2

我正在使用DBIselect模块来触发Oracle. 使用DBIprepare的模块,已经准备好查询,然后使用该模块,执行选择查询。execute

我的问题是:一旦执行查询,结果就会存储在内存中,直到我们使用任何fetchrow方法来检索结果。到那时,查询结果是存储在Oracle内存还是Perl内存?

据我了解,应该是在Oracle内存中,我还是想确认一下。

4

2 回答 2

1

它保存在 Oracle 中,直到您发出第一次提取。但是,您应该知道,一旦您进行第一次 fetch 调用 DBD::Oracle(我假设您正在使用)即使您只要求一个,也可能会一次性取回多行(您可以使用 RowsInCache 查看多少行)。您可以更改与 ora_prefetch_rows、ora_prefetch_memory 和 ora_row_cache_off 一起使用的设置。

于 2013-01-29T08:56:21.513 回答
1

在 Oracle 内存中。第一个提示:您无权访问该数据。execute您可以在语句之前和之后测试您的 Perl 脚本使用的内存量以确认。

http://docstore.mik.ua/orelly/linux/dbi/ch05_01.htm

于 2013-01-29T08:58:15.160 回答