1

OracleデータベースでCLOBを処理するための古いJava/JDBCコードを確認中です。既存のコードは、この質問で述べたアプローチと同様のアプローチを使用しています。

私は次のような記事を見つけました:

Oracle JDBC 10gより前は、JDBCのCLOBデータを操作するために、Oracle拡張クラスoracle.sql.CLOBが使用されていました。しかし現在、Oracle JDBC 10gには、JDBCアプリケーションでのCLOB操作を簡素化するいくつかの機能拡張があります。これにより、Oracle拡張クラスを使用する代わりに、使用可能な標準APIの一部を使用して大規模なデータを処理できます。

この記事では、この拡張機能の詳細について次の情報を提供しています。

デフォルトでは、メソッドpreparedStatement.setString()は、最大32765バイトの文字列の処理を許可します。32765バイトを超えるデータを挿入するために、新しく導入されたConnectionプロパティであるSetBigStringTryClobを設定できます。これにより、preparedStatement.setString()は、代わりに、新しく導入された別のメソッドOraclePreparedStatement.setStringForClob()を使用するように強制されます。

ただし、次のように警告します。

...この方法で非常に大量のデータを処理することは賢明ではないかもしれません。データのストリーミングは、より良い代替手段です。

しかし、上記はその記事の唯一のパフォーマンス関連の警告です。私の質問は、コード内のすべてのCLOBアクセスがすでにStringオブジェクトを介して行われている場合、このアプローチの変更によって引き起こされる可能性のある他の潜在的なパフォーマンスの問題について心配する必要があるかどうかです。言い換えると、私のアプリはストリーミングによって提供される利点を使用していません。これは、すでにStringオブジェクトにCLOBをロードしているため、現時点ではパフォーマンスの向上を目的としていないため、上記の警告は無視できる可能性があります。この手法に切り替えることで発生する可能性のある他のパフォーマンス関連の問題はありますか?

4

1 に答える 1

1

あなたはどのくらいの大きさについて話しているのですか?パフォーマンスの問題なしに、メモリ内の短いオーディオファイルとWeb画像を定期的に処理しています。これらはすべてキロバイトスケールのファイルです。メガバイトサイズを実行する場合は、ストリーミングの方が適していると思います。LOBへのストリーミングの使用は、標準化されたものを使用することで実際には非常に簡単になりました。

于 2010-12-20T18:03:46.633 に答える