---
title: "收集策略配置项（Prefs）管理功能 - OceanBase 数据库 V4.2.0 | OceanBase 文档中心"
description: 收集策略配置项（Prefs）管理功能 统计信息 Prefs 主要用于配置统计信息收集过程中收集策略的默认值，例如 granularity、method_opt 等的默认值。 统计信息收集策略 Prefs 配置项 Oracle 模式下提供如下虚拟表来查询当前设置的 Prefs： SYS.ALL_VIRTUAL_OPTS…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.0

# 收集策略配置项（Prefs）管理功能

更新时间：2023-10-24 13:51:07

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.0/zh-CN/700.reference/1000.performance-tuning-guide/500.sql-optimization/400.sql-optimization/400.optimizer-statistics/300.statistics-management/700.collection-policy-configuration-items-prefs-management.md)  

统计信息 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`

具体的定义如下：

```sql
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`

具体的定义如下：

```sql
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 | - Oracle 模式：用户名。如果用户名设置为 `NULL`，会默认使用当前登录用户名。 - MySQL 模式：表所在数据库名称。 |
| tabname | 表名。 |
| pname | Prefs 的名字。 |
| pvalue | Prefs 的值。 |

## 示例

- 设置全局级别的 `APPROXIMATE_NDV` 值为 `FALSE`。

  ```sql
  CALL dbms_stats.set_global_prefs('APPROXIMATE_NDV', 'FALSE');

  ```
 - 还原全局级别的所有 Prefs 默认值。

  ```sql
  CALL reset_global_pref_defaults();

  ```
 - 设置用户 `test` 的 `tbl1` 的收集策略的 `DEGREE` 值为 128。

  ```sql
  CALL dbms_stats.set_table_prefs('test', 'tbl1', 'DEGREE', '128');

  ```
 - 删除用户 `test` 的 `tbl1` 表的首选项 `DEGREE`。

  ```sql
  CALL dbms_stats.delete_table_prefs('test', 'tbl1', 'DEGREE');

  ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
