統計情報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の計算において推定方式を使用するかどうかを指定します。このPrefは__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 | 統計情報の履歴保持間隔時間を指定します。 |
統計情報ポリシーの設定と取得
OceanBaseはOracleモードおよびMySQLモードの両方をサポートしており、使用方法は基本的に同一です。特に明記がない限り、デフォルトでは使用方法が同じであることを意味します。
グローバル統計情報ポリシーの設定と取得
グローバル統計情報ポリシーは、以下のストアドプロシージャを使用して設定および取得を行います:
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の値。
テーブルレベルの統計情報ポリシーの設定と取得
テーブルレベルの統計情報ポリシーは、以下のストアドプロシージャを使用して設定および取得を行います:
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');
関連ドキュメント
グローバル統計情報ポリシーの設定と取得
MySQLモードにおけるグローバル統計情報ポリシーの設定および取得用ストアドプロシージャ:
Oracleモードにおけるグローバル統計情報ポリシーの設定および取得用ストアドプロシージャ:
テーブルレベルの統計情報ポリシーPrefsの設定と取得
MySQLモードにおけるテーブルレベルの統計情報ポリシーPrefsの設定および取得用ストアドプロシージャ:
Oracleモードにおけるテーブルレベルの統計情報ポリシーPrefsの設定および取得用ストアドプロシージャ: