統計情報PREFSは主に、統計情報収集プロセスにおける収集ポリシーのデフォルト値を設定するために使用されます。例えば、granularityやmethod_optなどのデフォルト値を設定できます。
統計情報収集ポリシーのPrefsパラメータ設定
Oracleモードでは、現在設定されているPrefsを照会するための以下の仮想テーブルが提供されています:
SYS.ALL_VIRTUAL_OPTSTAT_GLOBAL_PREFS_REAL_AGENTはGLOBALレベルのPrefs設定を照会するために使用されます。SYS.ALL_VIRTUAL_OPTSTAT_USER_PREFS_REAL_AGENTはテーブルレベルのPrefs設定を照会するために使用されます。
構成可能な統計情報収集ポリシーのPrefsは、次の表のとおりです。
Prefs名 |
Prefs値 |
説明 |
|---|---|---|
| APPROXIMATE_NDV | 値の範囲:
|
NDVの計算に推定方法を使用するかどうかを指定します。このPrefsは__all_optstat_user_prefsには挿入できません。 |
| CASCADE | 値の範囲:
|
このパラメータは現在利用されていません。 |
| DEGREE | デフォルト値:NULL | 収集の並列度を指定します。 |
| ESTIMATE_PERCENT | 値の範囲:[0.000001, 100] デフォルト値:"DBMS_STATS_AUTO_SAMPLE_SIZE"。 | 比率を採用します。 |
| BLOCK_SAMPLE | デフォルト値は "FALSE" です。 | サンプリングにブロックサンプリングを使用するかどうかを指定します。 |
| GRANULARITY | デフォルト値は"AUTO"です。 | 収集のパーティション粒度を指定します。構文は granularityと同じです。 |
| INCREMENTAL | 値の範囲:
|
増分収集戦略を採用するかどうかを指定します。 |
| INCREMENTAL_LEVEL | 値の範囲:
|
増分収集レベル。現在はテーブルレベルのみサポートしています。 |
| METHOD_OPT | デフォルト値: "FOR ALL COLUMNS SIZE AUTO" | 列レベルの統計情報収集方法を設定します。構文は method_optと同じです。 |
| NO_INVALIDATE | 値の範囲:
|
このパラメータは現在利用されていません。 |
| OPTIONS | 値の範囲:
|
このパラメータは現在利用されていません。 |
| STALE_PERCENT | デフォルト値:10 | 統計情報の有効期限が切れる割合のしきい値を指定します。 |
| STATS_RETENTION | 値の範囲:[0-365000] デフォルト値:31 | 統計情報の履歴保持間隔時間を指定します。 |
統計情報ポリシー Prefs の設定と取得
グローバル統計情報ポリシー Prefs の設定と取得
グローバル統計情報ポリシー Prefs は、以下のストアドプロシージャを使用して設定および取得します:
reset_global_pref_defaultsreset_param_defaultsset_global_prefsset_paramget_param
具体的な定義は以下のとおりです:
PROCEDURE reset_global_pref_defaults;
PROCEDURE reset_param_defaults;
PROCEDURE set_global_prefs(
pname VARCHAR2,
pvalue VARCHAR2
);
PROCEDURE set_param(
pname VARCHAR2,
pval VARCHAR2
);
FUNCTION get_param (
pname VARCHAR2
)RETURN VARCHAR2;
パラメータの説明は以下のとおりです:
pname:Prefs の名前。pvalue:Prefs の値。
テーブルレベルの統計情報ポリシー Prefs の設定と取得
テーブルレベルの統計情報ポリシー Prefs は、以下のストアドプロシージャを使用して設定および取得します:
set_schema_prefsset_table_prefsdelete_schema_prefsdelete_table_prefsget_prefs
具体的な定義は以下のとおりです:
PROCEDURE set_schema_prefs(
ownname VARCHAR2,
pname VARCHAR2,
pvalue VARCHAR2
);
PROCEDURE set_table_prefs(
ownname VARCHAR2,
tabname VARCHAR2,
pname VARCHAR2,
pvalue VARCHAR2
);
PROCEDURE delete_schema_prefs(
ownname VARCHAR2,
pname VARCHAR2
);
PROCEDURE delete_table_prefs (
ownname VARCHAR2,
tabname VARCHAR2,
pname VARCHAR2
);
FUNCTION get_prefs (
pname VARCHAR2,
ownname VARCHAR2 DEFAULT NULL,
tabname VARCHAR2 DEFAULT NULL
) RETURN VARCHAR2;
パラメータの説明は以下の表のとおりです。
パラメータ |
説明 |
|---|---|
| ownname |
|
| tabname | テーブル名。 |
| pname | Prefsの名前。 |
| pvalue | Prefsの値。 |
例
グローバルレベルの
APPROXIMATE_NDVの値をFALSEに設定します。CALL dbms_stats.set_global_prefs('APPROXIMATE_NDV', 'FALSE');グローバルレベルのすべてのPREFSのデフォルト値をリセットします。
CALL reset_global_pref_defaults();ユーザー
testのtbl1の収集戦略のDEGREE値を128に設定します。CALL dbms_stats.set_table_prefs('test', 'tbl1', 'DEGREE', '128');ユーザー
testのtbl1テーブルのPREFSDEGREEを削除します。CALL dbms_stats.delete_table_prefs('test', 'tbl1', 'DEGREE');