2

のクエリを実行するためにDBIモジュールを使用しています。DBIのモジュールを使用してクエリを作成し、モジュールを使用して選択クエリを実行します。selectOracleprepareexecute

私の質問は次fetchrowのとおりです。クエリが実行されると、いずれかのメソッドを使用して結果を取得するまで、結果がメモリに保存されます。それまでは、クエリ結果は Oracle メモリまたは Perl メモリに格納されますか?

私の理解では、それはオラクルのメモリにあるはずですが、それでも確認したかったのです。

4

2 に答える 2

1

Oracleメモリ内。最初のヒント:そのデータにアクセスすることはできません。executeステートメントの前後でPerlスクリプトによって使用されるメモリの量をテストして確認することができます。

http://docstore.mik.ua/orelly/linux/dbi/ch05_01.htmを参照してください

于 2013-01-29T08:58:15.160 に答える
1

最初のフェッチを発行するまで、Oracle に保持されます。ただし、最初のフェッチ呼び出しを行うと、DBD::Oracle (使用していると思われます) は、1 つだけを要求した場合でも、一度に複数の行をフェッチする可能性が高いことに注意してください (RowsInCache でいくつの行を確認できます)。 )。ora_prefetch_rows、ora_prefetch_memory、ora_row_cache_off で使用される設定を変更できます。

于 2013-01-29T08:56:21.513 に答える