统计信息 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"。 | 采用比例。 |
| 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 | 用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。 |
| 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的收集策略的DEGREE默认值。CALL dbms_stats.delete_table_prefs('test', 'tbl1', 'DEGREE');
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




