質問

私は、Oracleの統計についてのコメントを得たの

ます:

  

Oracleは、50Mが行数よりも大きいことを知りません。確かに、それは統計を持っていますが、彼らは古いものと間違っている可能性 - とOracle自体は統計が間違っているだけであるため、誤った結果を提供できるようにすることはない。

私は、クエリの実行計画を準備するとき、Oracleは統計に依存していることをかなり確信していました。バージョン10の前にそれが時々からの統計情報をリフレッシュするために推奨されたおよび10gからOracleが自動的に統計情報を収集します。

誰かがOracleのクエリアナライザは統計データに依存しているどのくらい説明できますか?

役に立ちましたか?

解決

Oracleは、クエリの実行の計画のを生成するために、多くの統計情報を使用しています。それはしていません(とすべきでない)を行うには、あなたが「ROWNUM <50000000」でやろうとしていたものである、のクエリの業績に影響を与えるような方法でこれらの統計を使用している何を。統計は、日付、または欠落していないかもしれません。しかし、これは、Oracleが正しい結果を生成するために時間がかかることがあり、それはOracleが誤った結果を返すことを意味しないことを意味します。

あなたが望んだとしてOracleは、それが「ROWNUM <50000000」は、テーブルは今60,000,000行が含まれていても、「すべての行を取得する」を意味していることを決めるかもしれない、働いていた場合(ただし、それを言って、日付の統計のうち、持っていただけで4900万を含まれています)。幸いなことはしていません。

他のヒント

統計は、クエリオプティマイザのために非常に重要です。彼らは、自動または手動で定期的に収集する必要があります。

クエリを実行すると、

Oracleは、クエリを満たすために利用可能な実行計画のプールを生成します。これらの実行計画は、彼らはあなたにまったく同じ結果を返す観点から同じですが、それは別の上で1つの計画のためにはるかに効率的かもしれそこに取得するだけの道です。この効率を決定するために、Oracleは、個々のコストを決定するために実行計画のそれぞれに使用されるオブジェクトで生成された統計情報を使用しています。これらの統計は、非存在であるか、または失効している場合、各プランに関連するコストはあまり正確になり、したがって、最適なプランが選択されない場合があります。

ここでは、Oracleは、このコストを決定するために使用する主要な統計情報の一部です

  

表の統計

 * Number of rows
 * Number of blocks
 * Average row length    
     

カラムの統計

 * Number of distinct values (NDV) in column
 * Number of nulls in column
 * Data distribution (histogram)
 * Extended statistics
     

索引統計

* Number of leaf blocks
* Levels
* Clustering factor
     

システム統計

* I/O performance and utilization
* CPU performance and utilization

統計は、最も適切なものを選択することができるように、クエリを実行するさまざまな方法の相対的なコストを計算するためにOracleのコストベース・オプティマイザ(CBO)によって使用されます。

全体的に、これは非常にうまく機能し、継続的に改善されています。たとえば11gでは、あなたは、相関列上の述部を持つクエリで大幅に役立つ複数列のヒストグラム収集することができます(例えば。強く誕生と星座の月のような相関関係、またはより弱く性別や身長のようcorrelted)。

しかし、それは完璧ではありません。例えば、2つのテーブル間の結合の結果セットのカーディナリティを推定フィルタ演算からカーディナリティを推定するが、両者を組み合わせることが容易に不正確であることができる推定の多くを必要とするように、合理的に正確です。いくつかのケースでは、これらの問題は、ヒントを、または中間結果セットのためのグローバルな一時テーブルを使用して回避することができます。

統計のもう一つの問題は、それらを変更すると実行計画を変更することができるということですので、運動のよりは、統計の継続的収集を阻止、またはそれらを実装する前に、統計への変更の影響を分析するためのいずれかに最近あります。

ジョナサン・ルイスの本を探してください - 。それは主題の非常に徹底した治療法です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top