统计信息的时效性

如果统计信息过旧会引起许多问题,而对于静态数据,反复收集统计信息又是没有意义的,所以注意统计信息的时效性非常重要。

数据库引擎通过SQL语句修改每一个对象的行数统计,可以通过如下查询得到:

SQL> select inserts,updates,deletes,truncated from dba_tab_modifications where table_name='EMP' and table_owner='SCOTT';

INSERTS UPDATES DELETES TRU

---------- ---------- ---------- ---

2 0 38 NO

注意*_tab_modifications视图并不是实时刷新的,而是oracle自己周期性的从内存中将修改的信息刷新进去,可以调用dbms_stats.flush_database_monitoring_info手动刷新。

oracle10gdba_tab_statisticsstale_stats字段显示对象的统计信息是否过时,YES为过时。oracle10g以前修改超过10%的数据行,统计信息就被认为是过期的,到oracle11g,可以修改stale_percent参数来配置阀值。

oracle9i上,该技术只有在表级别指定时才会启用,在创建或修改表时,加monitoring关键字或通过dbms_stats提供的过程,语法如下:

DBMS_STATS.ALTER_SCHEMA_TAB_MONITORING (
ownname VARCHAR2 DEFAULT NULL,
monitoring BOOLEAN DEFAULT TRUE);

DBMS_STATS.ALTER_DATABASE_TAB_MONITORING (
monitoring BOOLEAN DEFAULT TRUE,
sysobjs BOOLEAN DEFAULT FALSE);

上述两个过程只影响已经存在的表,不影响之后创建的表,到oracle10g以后,弃用了monitoring选项,由数据库参数statistics_level决定是否启动统计修改次数的功能,当参数设置为typeical或者all时,启动计数。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10176825/viewspace-1032258/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10176825/viewspace-1032258/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值