暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

OceanBase管理数据库统计信息收集策略 Prefs 配置项管理功能

2023-07-19
265

统计信息 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取值范围:
  • "TRUE"(默认值)
  • "FALSE"
计算 NDV 是否使用估算方式。需要注意,该 Prefs 不能插入__all_optstat_user_prefs 中。
CASCADE取值范围:
  • "TRUE"
  • "FALSE"
  • "DBMS_STATS.AUTO_CASCADE"(默认值)
该参数暂未使用。
DEGREE默认值:NULL收集并发度。
ESTIMATE_PERCENT取值范围:[0.000001, 100] 默认值:"DBMS_STATS.AUTO_SAMPLE_SIZE"。采用比例。
GRANULARITY默认值为"AUTO"。收集分区粒度,语法和 granularity 相同。
INCREMENTAL取值范围:
  • "TRUE"
  • "FALSE" (默认值)
是否采用增量收集策略。
INCREMENTAL_LEVEL取值范围:
  • "PARTITION"
  • "TABLE"(默认值)
增量收集级别。目前只支持表级别。
METHOD_OPT默认值: "FOR ALL COLUMNS SIZE AUTO"设置列级别的统计信息收集方式。语法和 method_opt 相同。
NO_INVALIDATE取值范围:
  • "TRUE"
  • "FALSE"
  • "DBMS_STATS.AUTO_INVALIDATE"(默认值)
该参数暂未使用。
OPTIONS取值范围:
  • "GATHER"(默认值)
  • "GATHER AUTO"
该参数暂未使用。
STALE_PERCENT默认值:10统计信息过期比例阈值。
STATS_RETENTION取值范围:[0-365000] 默认值:31统计信息历史保留的间隔时间。

统计信息策略 Prefs 设置与获取

全局统计信息策略 Prefs 设置与获取

全局统计信息策略 Prefs 通过如下存储过程进行设置与获取:

  • reset_global_pref_defaults

  • reset_param_defaults

  • set_global_prefs

  • set_param

  • get_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_prefs

  • set_table_prefs

  • delete_schema_prefs

  • delete_table_prefs

  • get_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表名。
pnamePrefs 的名字。
pvaluePrefs 的值。

示例

  • 设置全局级别的 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论