2012-02-13 6 views
3

すべて、1つのSELECTでOracle Databaseのパフォーマンスが大幅に低下する可能性はありますか?

は、バージョン10gリリース2以上のOracleデータベース

  • を考えてみましょう。
  • 100%以上

することで、既存のピーク負荷を超えるのに十分なハードウェアは、あなたは、単一の接続を持つ単一のユーザーとユーザーテーブル(ないシステムテーブルまたはV $への読み取り専用アクセスどのような状況を構築することができますまたはx $表)は、Oracleデータベースの全体的なパフォーマンスを低下させます。もしあれば、緩和戦略も列挙してください。

規定されているように、これは、追加の負荷が危険になるような飽和から数CPUサイクル離れたデータベースに関するものではないと考えてください。これは、現在の作業負荷に適した大きさのボックスです。

E.G.

ユーザーがパラレル・ヒントを使用する場合、Oracleは非常に高いDOPを使用してその問合せを実行し、CPUの他のプロセスを停止させることがあります。緩和:パラレルヒントが禁止されていることをユーザーに説明します。

+2

ru匿名のpl/sqlブロックも考慮していますか? – tbone

+0

良い質問です。ジャスティンはそれを以下に述べました。私の使用は単なるSQLですが、私はこれらの問題についてもよく聞きたいと思います。 –

答えて

6

最も簡単な方法は、一番大きなテーブルのデカルト積を行うクエリを複数回発行することです。これは、あなたのTEMPテーブルスペースをかなり早く吹き飛ばして、ソートする必要がある他のセッションのエラーを生成します。 TEMP(これは、個別に識別可能なアカウントではなく複数のユーザーが同時に使用するアプリケーションアカウントの場合には厄介になる可能性があります)で制限付きクォータを許可するか、Resource Managerを使用してセッションが長すぎたりあまりに多くのCPUまたはI/Oリソースを使用します。

明示的なPARALLELヒントがない場合でも、Oracleは自動的に並列性を使用する可能性があります。 Oracleのバージョンと並列性の構成方法に応じて、パラレル自動チューニングをオンにして、並列作業者の総数をいつでも制限できます。もちろん、それは読取り専用ユーザーが実際により多くの並列ワーカーを実行したい他のセッションを塞ぐ2人の並列ワーカーを生成する12のセッションを作成することを妨げるものではありません。システムがCPU制約を受ける場合、Resource Managerを使用して、さまざまな種類のワークロードの優先順位を構成できます。

匿名のPL/SQLブロックを許可した場合、PGAが使い果たされるまで数十万の行でいっぱいになるネストした表の作成など、より多くの方法があります。

+2

Ach、私はちょうど嫌なデパートを入力していました。私は最近、ループの繰り返しごとに再接続していた誰かが私の箱を持ってきたことを付け加えました。それは、外出する必要のあるクエリだけではありません。 – Ben

+0

私は考えていた温度。それをリストアップしてくれてありがとう。あなたの緩和に関して、私はあなたが呼び出しの上に行っていただきありがとうございますが、これはアプリのアカウントではありません。ユースケースは1人のユーザ、1人の接続です。ユーザーが割り当てる複数のTemp表領域を持つことは可能ですか? –

+0

@StephaniePage - はい、最近のOracleバージョンでは、異なるユーザーに異なるTEMP表スペースを割り当てることができます。あなたが8iまたは9iの日に戻れるかどうかはわかりません。 –

関連する問題