2011-02-04 10 views
3

Oracle 11でPreparedStatementsを実行するレポートエンジンがあります。これは優先度の高いタスクです。共有プールでOracleクエリを修正する方法はありますか

私が見てきたことは、最初のクエリ呼び出しは通常、後で同じクエリよりもずっと長く実行されるということです(クエリは異なるパラメータを持ち、異なるデータを返します)。

これは、最初のクエリ呼び出しでOracleによってハード解析が行われたためです。

Oracleには、頻繁に実行される優先順位の高い問合せであり、パフォーマンスが重視されるため、共有プールに残っている必要があります。

私はOracle 11で実行計画を修正することができますが、私はそれを修正したくないことを知っています。私はOracleがシステム変更に応じて変更できるようにしたい、私が望むのは、 。

+0

最初のバインド変数を使用しないことを確認してくださいでしょうか? –

答えて

1

Anton、 クエリでバインド変数を使用している場合は、再利用されます。カーソルはキャッシュされ、再使用される間はカーソルキャッシュに残ります。バインド変数を使用していることを確認してください。これにより、再利用性とスケーラビリティが向上します。

rdbmsを信頼しない場合は、dbms_shared_pool.keepを使用して固定することができます。 http://psoug.org/reference/dbms_shared_pool.html

これを行うには、カーソルを見つける必要があります。 通常、修正する必要がある他の問題があります。

ロナルド。 http://ronr.blogspot.com

+0

バインド変数を使用します。しかし、キャッシュが過負荷になってもそれは保持されます。問題は、私が見ているように、キャッシュがこのクエリーを取り除いて一日のうちに削除し、後でそれを再度解析することです。 – mavarazy

+1

その場合、shared_poolが小さすぎるか、アプリの他の部分があまり共有できないSQLを起動します。通常、rdbmsは可能なすべてを再利用してキャッシュしようとし、貴重なものとして認識したものは削除しません。 –

+0

はい、元の質問です。私は、Oracleがshared_poolからこのクエリを削除しないように助言することができますか?言い換えれば、共有プールでの最も価値のあるクエリ、ユーザビリティに関するクエリなどに設定します。 – mavarazy

4

おそらく、あなたは「...私がテストして決定した」に「...私が思う」あなたは変更する必要があります:)

クエリのパフォーマンスは、単に解析する以上の影響を受ける可能性があります。実行時に、ディスクからバッファ・キャッシュにブロックをフェッチする必要があります。後続の実行は、おそらくメモリ内のブロックを利用しているため、高速です。

EDIT:すぐに答えてください。回避策は、クエリを解析して実行しないジョブを定期的に実行させることです。これを使用して、解析またはフェッチが問題の場所であるかどうかを判断することさえできます。

+0

私はDBにアクセスできず、Oracleの技術的なテーブルを見ることができないため、テストしたとは言えません。私はAUTOTRACEを使うことさえできません。私はキャッシュについても推測していました。そのため、以前はさまざまなパラメータ、パラメータでテストしていました。キャッシュへの影響を排除するためにキャッシュに抽出すべきではないが、依然として効果はない。 – mavarazy

+0

テストしていない、あるいはできる人を見つけた場合は、 "ショットガン"アプローチに頼らざるを得ません。あらゆる種類のランダムな変更を改善してみるまで試してみてください。 –

+0

追加のアイデアを編集 –

1

あなたはdbms_shared_pool.keep

を使用して共有プールにピン留めしてみてくださいしかし、私は最初にあなたが出老化問題を抱えている

+0

ありがとう、それは面白いようです。 仕様によると、_Iはこのようにプールに入れるために関数を作る必要があります、wright?_、または簡単なクエリも機能しますか?そして、どのような機能が必要ですか? – mavarazy

+0

_ DBMS_SHARED_POOL.KEEP( '0034CDFF、20348871')によってカーソルを保持できます。完全な16進アドレスは最初の8文字にする必要があります_これが方法ですか? – mavarazy

+0

ピンインを使用する場合は、関数/プロシージャを使用します – tbone

関連する問題