• 締切済み

Analyzeとは?

表題の件について、詳しい方いらっしゃいましたら教えて下さい。 具体的にどのような処理が行われ、どのようなメリットがあるのでしょうか? 以上、宜しくお願いします。

みんなの回答

  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.3

補足ですが、*** 最近のオラクル*** のオプティマイザは analyze コマンドで作成された統計情報は利用されません。 ANALYZE という言葉はしばらく残るとは思いますが、死語になる可能性があります。 ANALYZE コマンドが別の整合性など要件に向けて機能拡張または廃止されると 統計情報と関連する意味合いは消えるでしょう。 現在のオプティマイザ向けの統計情報の収集には dbms_stat パッケージで作成した統計情報を使用します。 事前の統計情報がない場合には、動的サンプリングが行なわれますし、自動的に日次で統計情報が管理・収集されていますので、おおむね統計情報が存在しないことはありません。 統計情報が一切使用できない場合にはディクショナリに組み込まれた固定の統計情報が代用されます。 # これらは Oracle 9i ~ 10g の話です。

回答No.2

何となく気になったので。 >コストベースによる実行計画の作成のために必要となる >統計情報を作成するためのコマンド。 ここまではOKというか適正 >チューニングとしてうまくつかえば性能があがるが、 >そうでないとかえって遅くなることもある。 ANALYZEは、チューニングの手法でなく、コストベースオプティマイザが 動作するのために前提となる要件です。 コストベースオプティマイザは、全能でないので、必ずしも適切な実行計画を 立案するとは限らず、SQLの手直しやオプティマイザヒントでの補正を行う必要を 必要なする場合があります。 けれど、それはANALYZEが悪いわけでなく、ただオプティマイザが タコなだけなはずです。 ANALYZEをしない方向で考えては、いけません。 そういう場合は、ANALYZEを行わないのでなく、コストベースオプティマイザを 使わない方向で検討すべきです。(10G以降は、コストベースのみですが・・) 本題に話を戻すと・・ >どのようなメリットがあるのでしょうか? メリット云々でなく、コストベースオプティマイザをまともに動作させるためには 必要な作業です。 ANALYZEされていないテーブルや索引に対しては、オプティマイザは 適当に推定して動作しますので、適切な判断ができません。 ただし、ANALYZEは、データを実際に検索して、データの統計をとるので、 それなりの時間を必要とします。 運用の仕方にもよりますが、データの特性が反映できるよう適切なタイミングで 適切な量の統計情報を収集する必要があります。

  • 0KG00
  • ベストアンサー率36% (334/913)
回答No.1

コストベースによる実行計画の作成のために必要となる統計情報を作成するためのコマンド。チューニングとしてうまくつかえば性能があがるが、そうでないとかえって遅くなることもある。

参考URL:
http://www.int21.co.jp/pcdn/oracle/article/analyze.html

関連するQ&A