GAGA LIFE.

DBAブログ

Oracle 統計情報の種類

概要

Oracleの統計情報について簡単にまとめます。これらの精度を高めることがよりよい実行計画を生成する可能性を高めることにつながります。

Oracleの統計情報の種類とそれぞれの特徴

種類 概要 未取得時の影響 取得方法
オブジェクト統計 表統計 表に対する統計
・表(パーティション)の行数
・表内に格納されたHWM以下に存在するデータブロック数
・表内の行の長さの平均
・行連鎖/行移行が発生している行数 など
非効率な実行計画が生成される可能性がある DBMS_STATS.GATHER_TABLE_STATS
索引統計 索引に対する統計
・ルート・ブロックからリーフ・ブロックまでの索引の高さ
・索引に含まれるリーフ・ブロックの数
・クラスタ化係数
・索引キー値の種類の数 など
同上 DBMS_STATS.GATHER_INDEX_STATS
列統計 列に対する統計
・列内に含まれる値の種類
・値がNULLの行数
・列の最小値/最大値
・列内に格納されたデータの分布度 など
同上

DBMS_STATS.GATHER_TABLE_STATS

※method_opt引数で制御

システム統計 システムのI/O性能やCPU速度の統計情報
NOWORKLOAD統計/WORKLOAD統計がある
サーバーのリソース状況に合った実行計画が生成されない可能性がある DBMS_STATS.GATHER_SYSTEM_STATS();
ディクショナリ統計 データディクショナリの統計情報 ・再帰的SQLやユーザSQLのハードパース時に長時間化する可能性がある
・バックグラウンドプロセスの内部SQL/EM/AWRなどが発行するSQLで不適切な実行計画が選択される可能性がある
DBMS_STATS.GATHER_DICTIONARY_STATS();
固定オブジェクト統計 V$ビューなどの動的パフォーマンスビューのもととなるX$表などの固定オブジェクトの統計情報 同上 DBMS_STATS.GATHER_FIXED_OBJECTS_STATS();

参考資料

Expert Oracle SQL