2012-04-12 1 views
1

オラクルのチューニングを開始する方法についてアドバイスを探していますが、これまでにやったことはありません。クエリチューニングを開始するには?

クエリのパフォーマンスチューニングの方法を知りたいと思います。私たちはクライアント向けのアプリケーションを開発しているので、ここに本番データベースはありません。私は基本的に、どのクエリが重要であるかを知っており、それらが速く実行されるようにしたいと考えています。

MSSQLでは、実行計画を有効にすると、クエリに役立つ追加のインデックスが表示されます。 Oracleに類似したものはありますか?あるいは別のアプローチですか?

+0

私はクエリの実行計画を記録することから始めます。 SQLワークロードをキャプチャすることも興味深い選択肢です。ショットガンアプローチに従うための – Anonymous

答えて

6

パフォーマンスチューニングは大きな課題です。人々が取るアプローチの基本的な2つのタイプがあります:科学または推測。 (そうでない場合はショットガンアプローチとして知られている)

A.当て推量列がすでに*

  • それらを持っていないインデックスを作成します。必要なクエリ
  • 推測で

    1. ルックインデックスを作成し、クエリを再実行します。
    2. 違いがなければ、手順1に戻り、繰り返します。

    B.科学

    1. クエリがあること "必要がある" どれだけ速くして下さい。
    2. クエリが実際にどれくらい速く(「現実的な」条件の下で)できるかを決定します。
    3. すでに十分速い場合は、ここで停止してください。そうでない場合:
    4. ほとんどの時間がどこにあるのかを判断します。回転しているのか待機していますか?
    5. 待っている場合は、待っているものを見つけて、可能であれば削除してください。
    6. スピンしている場合は、行う必要がないことを見つけ、可能であれば削除してください。
    7. 手順2に戻り、繰り返します。場合

      ***から

    (何も例えば、いくつかのセッションやシステム設定を変更し、テーブルを再構築など*作成するためのこれ以上のインデックスがない場合は、変更するには、何か他のものを探しては。)それは明らかではありません、私はではありませんアプローチを主張する)

  • -1

    私が提案する最初のことは、prodデータベースを調整するつもりがない場合、prod dbからDevにテーブル統計情報をインポートする必要があるということです。これにより、あなたのDevシステムはprodと似たデータを持つように動作します。統計をインポートするためのGoogleの場合は、記事の負荷を見つけるでしょう。次の段階では、一般的にインデックスを追加することができるクエリを見ることになります。完全なテーブルスキャンは、見た目の良い場所です。

    バインド変数を使用していますか?

    Oracleは多くのキャッシュ・データを処理するため、バインド変数を使用できる場所を参照してください。これにより、サーバー・プロセスのプライベート・スペースでフィルタリングが行われ、物理読取りが行われないようにdbが保存されます。

    これが役に立ちます。

    +0

    -1 –

    関連する問題