0

私は継承しました...まあ、私はそれを#### Strutsアプリケーションの一部と呼ぶことができると思います。そして、品質管理基準が嗅ぎタバコに達しているかどうかをチェックするLevey-Jenningsプロセスを最適化する任務を負っています。

プロセス自体は正常に実行されますが、データセットが小さい場合でも、パフォーマンス時間は常に大幅に増加しています。アルゴリズムの各部分の間の時間をテストしたところ、大きな問題はJavaのexecuteQuery()メソッドであることがわかりました。

最近、アプリケーションを実行し、実行時間を10秒と記録しました。executeQuery()は、それ自体でこれらの秒のうち6秒かかりました。問題が何であるかを知りたくて、クエリをTOADに取り込み、逐語的に実行しました。実行には1秒しかかかりませんでした。

Levey-Jenningsアプリケーションで実行するのに60秒かかった、さらに大きなデータセットを実行しましたが、TOADでは10秒かかりました。

これはクエリの問題ですか、それともexecuteQuery()を使用しているのが、通常、極端な速度低下の前兆ですか?

4

1 に答える 1

5

TOAD (またはその他の IDE) でクエリを実行すると、このツールは表示可能な結果を​​できるだけ早く提供したいと考えています。通常、10 ~ 40 行のグリッドが表示されます。最初の 10 ~ 40 行をできるだけ早く表示するために、クエリをヒントするか、最適化環境を変更して最初の行をできるだけ速く生成します。

FIRST_ROWS ヒントの詳細については、http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements006.htm#SQLRF50302 を参照してください

アプリケーションのクエリで FIRST_ROWS ヒントが使用されていない可能性があります。できるだけ早くすべての行が必要です。最初の行がすぐに表示されるかどうかは気にしません。したがって、これら 2 つのクエリの最適化環境は異なります。

また、最初の行を生成するのにかかった時間を TOAD が表示することも役に立ちません。ただし、最後の行に移動するオプションがあります。それを押すと、時間がかかることがわかります。

お役に立てれば。

よろしく、
ロブ。

于 2011-04-21T15:08:24.260 に答える