DBMS_Stats是什么东西?

[复制链接]
查看11 | 回复6 | 2009-1-4 14:52:28 | 显示全部楼层 |阅读模式
DBMS_Stats是干什么用的?
1) 我需要在什么时候来使用这个东西
2) 它是干什么用的?如何用?如下的这个什么意思?
dbms_stats.gather_schema_stats(
ownname
=> 'SCOTT',
estimate_percent => dbms_stats.auto_sample_size,
method_opt => 'for all columns size skewonly',
degree => 7
);
是把所有scott下的东西做个统计吗?
3)如果我执行了以上的东西,那输出是什么?它对我的数据库会有什么样的影响?
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
呵呵,问题真多。

前几个关于这个包都有些什么,做什么用可以去看文档。

dbms_stats.gather_schema_stats(
ownname => 'SCOTT', ---将scott下的所有表都分析。
estimate_percent => dbms_stats.auto_sample_size, ----按sample比例。
method_opt => 'for all columns size skewonly',---生成histogram
degree => 7---并行度为7。
);
执行完后可以通过 user_tables中的 num_rows 等列观察相应统计信息。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
那我在什么情况下使用这个dbms_stats?
使用了它的后果又是什么?是否我每周都执行一便,我的数据库就自动被优化了?
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
对表分析之后,会生成统计信息,
会影响执行计划,更倾向于走cbo。
但未必cbo就一定会比rbo更好。
数据库优化肯定不是就光收集些统计信息这么简单。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
也就是我只用执行了dbms_stats里的procedure
然后某些数据字典表里会生成很多统计数据
这些数据,会直接影响到执行sql时,执行计划对具体实行方式的最优选择?
大家一般都多长时间做一次dbms_stats? 每天做?还是每周做?还是每月做?
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
高手,快回答我!!
谢谢您!!
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
对scott用户的所有表和索引做分析,我认为对用户级做分析可靠性很高,比单独对一个表做分析的效果要好得多。一般不会引发执行计划错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行