10

私はOracle dbが初めてです。同じ結果セットを返す 2 つのクエリがあります。それぞれの性能を測定し、より良いものを選択したいと考えています。Oracle SQL開発者を使用してそれを行うにはどうすればよいですか? 特定のツールが統計を提供することを読んだことを覚えています。これらの統計の読み方に関する指針はありますか?

更新: Rob Van の提案に従って、tkprof ユーティリティを使用してクエリのパフォーマンスを調べました。いくつかのパラメーター (カウント、行、経過時間、実行時間) は理解できましたが、ほとんどのパラメーターは理解できませんでした。これらのパラメータの重要性について誰か助けてもらえますか? 以下は結果です。

Query 1:
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.01       0.01          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch       49      0.26       0.32         45        494          0       23959
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       51      0.28       0.33         45        494          0       23959

Query2:
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch       33      0.25       0.24          0        904          0       15992
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       35      0.25       0.24          0        904          0       15992

クエリ 2 がクエリ 1 よりも優れていると判断できます。ディスク、クエリ、および現在のパラメーターの意味について何かヘルプはありますか??

4

4 に答える 4

13

「プランの説明」と呼ばれる SQL エディターの上にボタンがあります。このツールは、各ルートのコストと、ステートメントがインデックスとパーティションをどのように使用するかを示します。エラーが発生する可能性があることに注意してください.DBAはユーザーアカウントの機能を有効にする必要があります.「トレース」だと思いますが、その点で間違っている可能性があります. 実行ステートメントの出力を読むのは、最初は難しいかもしれませんが、優れた SQL を作成するのに役立つ優れたツールです。

于 2009-08-21T15:40:46.670 に答える
4

残念ながら、EXPLAIN PLAN が唯一の方法です。低コスト (Explain Plan を見ると、COST という列があるはずです) が優れていると仮定することから始めますが、より多くのことを学ぶためにそれについて読む必要があります。チャットできるDBAがそこにいるかもしれませんか?データとクエリがなければ、さらにアドバイスすることは困難です

Oracle の開発に関係することは、Tom Kyte (彼を Google で検索) によるものか、Ask Tom の Web サイトを検索することから始めるのがよいでしょう。本気で関わりたいなら

クエリを数回だけ実行するのはかなり悪い考えです。説明プランのコストが最良のクエリを教えてくれることを受け入れるのと同じです。クエリが使用しているリソースと、それが本番システムにどのように影響するかを考慮する必要があります。

クエリが呼び出される頻度に応じて、クエリのパフォーマンスをどの程度追跡する必要があるかに影響します (純粋主義者には申し訳ありませんが、そうです)。クエリが週に 1 回しか実行されず、他に影響を与えずに実行に 1 分かかる場合、そのクエリを最適化する必要がありますか? 論理的に追跡しやすいクエリを使用する方が保守が容易ですか?

クエリが 1 秒間に複数回呼び出される場合、Explain Plan を完全に理解し、クエリを最適化して最高のパフォーマンスを得る方法をさらに理解する必要があります。

于 2009-08-24T13:34:05.133 に答える
3

基本的な答え - 各クエリを数回実行し、どちらが高速かを確認します。最良の部分 - Oracle のパフォーマンスについて学習しなくても、これを行うことができます。知っておく必要がある唯一のことは、最初の試行は信頼できないということです。ほとんどの場合、2 回目の試行では RAM からキャッシュされたデータが使用されますが、ディスクからデータが読み取られるためです。そのため、各クエリを数回試行します。

于 2009-08-21T18:34:14.060 に答える
2

OTN では、Randolf Geist と私が、パフォーマンスの測定方法について 2 つの投稿を書いています。それらのスレッドに示されているようにすれば、より良いものを選択できるように情報を収集できます.

フルバージョンが必要な場合は、Randolf'sにアクセスしてください。

短いバージョンが必要な場合は、のものにアクセスしてください:

どちらのスレッドも、Explain Plan とトレースを使用して時間が費やされている場所を確認する方法を説明しています。次に、何を「より良い」と正確に認定するかを決定するのはあなた次第です。これは、最短の経過時間、使用されたリソースの最小量、ラッチの最小数、またはその他の可能性があります。

お役に立てれば。

よろしく、ロブ。

于 2009-08-23T13:05:28.583 に答える