11G新特性 -- Statistics Preferences

本文介绍了StatisticsPreferences新特性,可在不同级别设置统计信息偏好,包括publish、stale_percent及incremental选项。通过示例展示了如何使用DBMS_STATS.SET_TABLE_PREFS过程来设置表级别的统计信息偏好。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Statistics Preferences新特性可以实现对指定对象进行信息收集。

可以在table、schema、database、global级别设置statistics preference。 在database级别的statistics preference集会应用到数据库中的所有表;在global级别的statistics preference会应用到数据库中所有没有被设置statistics preference的表。

preference集不同级别的优先级:table级别 > schema级别 > database级别 > global 级别。高优先级会override低优先级设置。

 

查看当前数据库是否设置了statistics preference

SQL> select * from dba_tab_stat_prefs;

no rows selected

SQL> desc dba_tab_stat_prefs
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 OWNER                                     NOT NULL VARCHAR2(30)
 TABLE_NAME                                NOT NULL VARCHAR2(30)
 PREFERENCE_NAME                                    VARCHAR2(30)
 PREFERENCE_VALUE                                   VARCHAR2(4000)

SQL> 

在11g中增加了三个选项:

1.publish 取值为true、false。 收集到的统计信息是否存到数据字典中。在10g中是自动存到数据字典中,即自动发布;在11g中可以先现将统计信息置于pending状态(这些统计信息被称为pending statistics),确认对性能有提升后再发布。

2.stale_percent 设置对象统计信息过期的阀值。自数据库统计对象收集后,对象中的行被修改的百分比超过该值就会被认为统计信息是过期的。

3.incremental 是否进行增量收集

语法示例:
DBMS_STATS.SET_TABLE_PREFS (
    ownname    IN  VARCHAR2,        #Owner name
    tabname    IN  VARCHAR2,        #Table name
    pname      IN  VARCHAR2,        #Preference name
    pvalue     IN  VARCHAR2        #Preference value. If NULL is specified, it will set the Oracle default value.
);

SQL> exec dbms_stats.set_table_prefs('SCOTT','DEPT','PUBLISH','TRUE');

PL/SQL procedure successfully completed.

SQL> select dbms_stats.get_prefs('PUBLISH','SCOTT','DEPT') get_prefs from dual;

GET_PREFS
--------------------------------------------------------------------------------
TRUE

SQL> exec dbms_stats.set_table_prefs('SCOTT','DEPT','PUBLISH','FALSE');     设置“PUBLISH”属性,设为FALSE表示它还处于挂起状态,等待发布

PL/SQL procedure successfully completed.

SQL> select dbms_stats.get_prefs('PUBLISH','SCOTT','DEPT') get_prefs from dual;

GET_PREFS
--------------------------------------------------------------------------------
FALSE
SQL> select * from dba_tab_stat_prefs;

OWNER                          TABLE_NAME                     PREFERENCE_NAME                PREFERENCE_VALUE
------------------------------ ------------------------------ ------------------------------ ------------------------------
SCOTT                          DEPT                           PUBLISH                        TRUE

SQL> 

 

其他参考文档:
dbms_stats.set_database_prefs
dbms_stats.set_global_prefs procedure
dbms_stats.set_schema_prefs procedure
dbms_stats.set_table_prefs procedure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值