2016-04-30 7 views
1

Webサイトのコンテンツを解析し、htmlテーブルの各行をOracleデータベースに挿入するJavaコードがあります。ウェブサイトは、私が解析したいの周りに70000ページがあり、各ページには、このような、をループに非常に単純なURLを持っている:私は2にIDを変更したときに一度に100万レコードをデータベースに挿入する前に、どのような対策を講じなければなりませんか?

http://website.com/contents?id=1 

だから、基本的に次のページに移動します。また、各ページには平均14〜15行のhtmlテーブルがあります。

また、(java.util.logging.Loggerを介して)ログファイルを作成して、挿入に問題がないかどうかを確認します。

私はページID10(150レコード前後)まで試してみましたが、問題なく動作しましたが、まだ70000ページ(1.000.000レコード)は試していませんでした。私は自宅のコンピュータとoracle express editionでこれをやっています。一度に1.000.000レコードを挿入しようとするとどうなりますか?

+3

これをテストし、何が起こっているかを確認することを検討する必要があります。ほぼ確実に、ユースケースを予測することはできません。 –

+0

ボトルネックは、Oracle DBへの挿入操作ではなく、HTMLページの受信と解析です。 –

+0

Oracle側では、Oracleが10000行ごとに変更をコミットしていることを確実に確認してください.1つのトランザクションにすべての行を挿入しようとすると、SGAが氾濫してトランザクションがロールバックされる可能性が高くなります。 –

答えて

1

最初に、Oracle XEエディションにはサイズの制限があります。挿入がそのサイズを超えた場合、行を追加することはできません。

複数セッションの挿入数が多い場合は、テーブルFREELISTSのサイズを大きくすることができます。 REDO世代が必要ない場合は、APPENDヒントを使用できます。

アプリケーションで実行できる場合は、フラット・ファイルでデータをエクスポートし、Sql * Loaderを実行してすべてのデータを表に一度インポートできます。プログラムでこれを行うことができます。

関連する問題