Rubyを使用してPostgreSQL DBからローをフェッチしています。 pg
宝石のサイト(https://deveiate.org/code/pg/PG/Result.html)RubyとPostgreSQLのシングルローモード
conn.send_query("first SQL query")
conn.set_single_row_mode
conn.get_result.stream_each do |row|
# do something with the received row of the first query
end
に説明したように、これは、単一の行モードで実行されて、私は期待通りに分けて、結果セットのすべての行を取得します。しかし、大きな結果セットの場合、Rubyはそれらを記憶に残しているようです。これにより、Rubyプログラムがメモリ不足になると終了します。
既に処理された行のスペースを解放する方法はありますか? 私はclear()
またはautoclear?
を使用すべきだと思いますが、私はそれをどのように使用するのか正確に何を明確にするべきかはわかりません。
(
LIMIT
とOFFSET
を追加)承認使用してみてください多分それはメモリ内の行を保持しているpostgresのではないのですが、あなたのコード? –私はそれがポストグルではないと確信しています。私はそれが私のコードかpgの宝石のどちらかであると思う – maax
私は質問がそれはPgの宝石であると推測し、私はいくつかの代替案を使用することができますか、または宝石が問題なく、私のcideが間違っている場合 – maax