- 締切済み
CSV出力とCPU処理分散について
環境:Oracle9i 9.2.0 言語:VisualBasic6.0 バッチ処理(VB)で各テーブルをCSVに出力していますが、あるテーブルがメモリオーバーによりエラーになりました。 原因はVB内で持てる最大の容量2GBを超えてしまった為です。 (VBでは1つのテーブルを全件取得してCSV出力していますが、1つのテーブルを全件取得したときに2G超になってしまったようです) 対応策としてVBではなく、SQLPlusでCSV出力対応することにしたのですが、処理速度が遅いと言われてしまいました。 上記原因はサーバの構成が「CPUを2つ、各CPU内のセグメントが2つずつ存在する為、理論上4つのCPUに分散されている」ことになっているようで、VBでは処理が各CPUに分散されているのですが、SQLPlusで実行したバッチでは処理が1つのCPUで実行されている為、遅いみたいです。 なぜVBでは処理が分散されているのにSQLPlusでは処理が分散されていないのでしょうか? OSの問題のような気もしますがなにぶん知識が浅い為、原因がつかめない状況です。 SQLPlusでも処理が分散されれば一番よいのですが、現状では対象テーブルを分割(年月など)して対応するしかなさそうです。 どなたかアドバイスお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ese_ee
- ベストアンサー率48% (68/139)
回答No.1
VB側でファイルサイズが2GBを超えそうになったら、 吐き出すファイルを切り替えればいいと思います。
補足
回答ありがとうございます。 すいません。説明不足でした。 ファイルサイズは2GBではないです。 440M程度です。 select文でデータを取得するときに2GB超になると思われます。