1

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

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

MSSQLでは、これは非常に簡単です。実行プランを有効にすると、クエリに役立つ追加のインデックスが表示されます。Oracleに似たものはありますか?またはおそらく別のアプローチ?

4

2 に答える 2

6

パフォーマンスの調整は大きなテーマです。人々がとるアプローチには、科学当て推量の2つの基本的なタイプがあります。

A.推測作業(ショットガンアプローチとも呼ばれます)

  1. クエリを見てください
  2. どの列にまだインデックスがないインデックスが必要かを推測します*
  3. インデックスを作成し、クエリを再実行します
  4. 違いがない場合は、手順1に戻って繰り返します。

B.科学

  1. クエリの「すべき」速度を調べます。
  2. クエリが実際にどれだけ速いかを判断します(可能な限り「現実的な」条件下で)。
  3. すでに十分に速い場合は、ここで停止します。さもないと:
  4. ほとんどの時間がどこに向かっているのかを判断します-それは回転していますか、それとも待っていますか?
  5. 待っている場合は、何を待っているのかを調べ、可能であればそれを排除します。
  6. 回転している場合は、実行する必要がないことを確認し、可能であればそれを排除します。
  7. 手順2に戻り、繰り返します。

*作成するインデックスがこれ以上ない場合は、変更するものを探します。たとえば、いくつかのセッションまたはシステム設定を変更したり、テーブルを再構築したりします。)

***明らかでない場合は、アプローチAを推奨していません)

于 2012-04-13T02:10:15.657 に答える
-1

最初に提案するのは、prodデータベースでチューニングを行わない場合は、テーブルの統計をproddbからDevデータベースにインポートする必要があるということです。これにより、Devシステムはprodと同様のデータを持っているので動作します。あなたが統計をインポートするためにグーグルするならば、あなたはたくさんの記事を見つけるでしょう。次の段階では、全表スキャンが適切であると思われる場合に、一般的にインデックスを追加できるクエリを確認します。

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

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

お役に立てれば。

于 2012-04-12T22:45:34.540 に答える